Spaces:
Sleeping
Sleeping
Update closest images display: convert gallery to table format with full specimen names
Browse files- Convert closest images gallery to HTML table format
- Display full specimen names (e.g., Fabaceae_Robinia_lesquereuxi_Florissant_FLFO_002604B) instead of just folder names
- Extract specimen names using path.split('/')[-1] method
- Add uniform table styling (remove alternating row colors)
- Update labels.py: fix duplicate entries and match with user's plant family list
- Add error handling for Git LFS pickle files
- Improve dark mode support for user guide
- Add CSV generation script for fossil examples
- SETUP.md +60 -0
- app.py +316 -50
- closest_sample.py +114 -12
- create_fossil_csv.py +207 -0
- fossil_responses_with_images.csv +868 -0
- labels.py +12 -12
- run.sh +20 -0
SETUP.md
ADDED
|
@@ -0,0 +1,60 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# Setup Instructions
|
| 2 |
+
|
| 3 |
+
## Prerequisites
|
| 4 |
+
- Python 3.11+
|
| 5 |
+
- Virtual environment (already created in `venv/`)
|
| 6 |
+
|
| 7 |
+
## Quick Start
|
| 8 |
+
|
| 9 |
+
### Option 1: Using the run script (Recommended)
|
| 10 |
+
```bash
|
| 11 |
+
./run.sh
|
| 12 |
+
```
|
| 13 |
+
|
| 14 |
+
### Option 2: Manual setup
|
| 15 |
+
|
| 16 |
+
1. **Create a `.env` file** in the root directory with your HuggingFace read token:
|
| 17 |
+
```bash
|
| 18 |
+
echo "READ_TOKEN=your_huggingface_read_token_here" > .env
|
| 19 |
+
```
|
| 20 |
+
|
| 21 |
+
To get a HuggingFace token:
|
| 22 |
+
1. Go to https://huggingface.co/settings/tokens
|
| 23 |
+
2. Create a new token with "Read" permissions
|
| 24 |
+
3. Copy the token and paste it in your `.env` file
|
| 25 |
+
|
| 26 |
+
2. **Activate the virtual environment:**
|
| 27 |
+
```bash
|
| 28 |
+
source venv/bin/activate
|
| 29 |
+
```
|
| 30 |
+
|
| 31 |
+
3. **Run the application:**
|
| 32 |
+
```bash
|
| 33 |
+
python app.py
|
| 34 |
+
```
|
| 35 |
+
|
| 36 |
+
## What Happens on First Run
|
| 37 |
+
|
| 38 |
+
The app will automatically download:
|
| 39 |
+
- **Models** to `model_classification/` directory (from `Serrelab/fossil_classification_models`)
|
| 40 |
+
- **SAM Model** to `model/` directory (from `Serrelab/SAM_Leaves`)
|
| 41 |
+
- **Datasets** to `dataset/` and `images/` directories (from `Serrelab/Fossils` and `Serrelab/image_examples_gradio`)
|
| 42 |
+
|
| 43 |
+
**Note:** These downloads require a valid `READ_TOKEN` in your `.env` file.
|
| 44 |
+
|
| 45 |
+
## Accessing the App
|
| 46 |
+
|
| 47 |
+
Once running, the app will be available at:
|
| 48 |
+
- **Local URL:** http://localhost:7860
|
| 49 |
+
- The URL will be displayed in the terminal when the app starts
|
| 50 |
+
|
| 51 |
+
## Troubleshooting
|
| 52 |
+
|
| 53 |
+
### "401 Unauthorized" Error
|
| 54 |
+
- Make sure you have created a `.env` file with a valid `READ_TOKEN`
|
| 55 |
+
- Verify your token has "Read" permissions at https://huggingface.co/settings/tokens
|
| 56 |
+
|
| 57 |
+
### Models Already Downloaded
|
| 58 |
+
- If models are already present in `model_classification/` and `model/` directories, the app will skip downloading
|
| 59 |
+
- You can still run the app without a token if models are already present
|
| 60 |
+
|
app.py
CHANGED
|
@@ -22,6 +22,9 @@ from inference_resnet_v2 import get_resnet_model,inference_resnet_embedding_v2,i
|
|
| 22 |
from inference_beit import get_triplet_model_beit
|
| 23 |
import pathlib
|
| 24 |
import tensorflow as tf
|
|
|
|
|
|
|
|
|
|
| 25 |
from closest_sample import get_images,get_diagram
|
| 26 |
|
| 27 |
|
|
@@ -55,22 +58,23 @@ Code: <a href='https://github.com/orgs/serre-lab/projects/2' target='_blank'>Git
|
|
| 55 |
"""
|
| 56 |
|
| 57 |
USER_GUIDE = """
|
| 58 |
-
|
| 59 |
-
|
| 60 |
-
|
| 61 |
-
|
| 62 |
-
|
| 63 |
-
|
| 64 |
-
|
| 65 |
-
|
| 66 |
-
|
| 67 |
-
|
| 68 |
-
|
| 69 |
-
|
| 70 |
-
|
| 71 |
-
|
| 72 |
-
|
| 73 |
-
|
|
|
|
| 74 |
|
| 75 |
TIPS = """
|
| 76 |
## Tips
|
|
@@ -195,9 +199,9 @@ def get_embeddings(input_image,model_name):
|
|
| 195 |
|
| 196 |
def find_closest(input_image,model_name):
|
| 197 |
embedding = get_embeddings(input_image,model_name)
|
| 198 |
-
classes, paths = get_images(embedding,model_name)
|
| 199 |
#outputs = classes+paths
|
| 200 |
-
return classes,paths
|
| 201 |
|
| 202 |
def generate_diagram_closest(input_image,model_name,top_k):
|
| 203 |
embedding = get_embeddings(input_image,model_name)
|
|
@@ -219,14 +223,112 @@ def explain_image(input_image,model_name,explain_method,nb_samples):
|
|
| 219 |
return classes,exp_list
|
| 220 |
|
| 221 |
def setup_examples():
|
| 222 |
-
|
| 223 |
-
|
| 224 |
-
|
| 225 |
-
|
| 226 |
-
|
| 227 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 228 |
|
| 229 |
def preprocess_image(image, output_size=(300, 300)):
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 230 |
#shape (height, width, channels)
|
| 231 |
h, w = image.shape[:2]
|
| 232 |
|
|
@@ -255,9 +357,28 @@ def increase_brightness(img, value=30):
|
|
| 255 |
img_bright = cv2.cvtColor(final_hsv, cv2.COLOR_HSV2BGR)
|
| 256 |
return img_bright
|
| 257 |
def update_display(image):
|
| 258 |
-
|
| 259 |
-
|
| 260 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 261 |
model_name = "Fossils 142"
|
| 262 |
|
| 263 |
# gr.Dropdown(
|
|
@@ -287,17 +408,45 @@ def update_display(image):
|
|
| 287 |
class_predicted = None # gr.Label(label='Class Predicted',num_top_classes=10)
|
| 288 |
exp_gallery = None
|
| 289 |
# 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)
|
| 290 |
-
|
| 291 |
# gr.Gallery(label="Closest Images", show_label=False,elem_id="gallery",columns=[5], rows=[1],height='auto', allow_preview=True, preview=None)
|
| 292 |
diagram= None
|
| 293 |
# gr.Image(label = 'Bar Chart')
|
| 294 |
-
return original_image,processed_image,processed_image,instruction,model_name,explain_method,sampling_size,top_k,class_predicted,exp_gallery,
|
| 295 |
def update_slider_visibility(explain_method):
|
| 296 |
bool = explain_method=="Rise"
|
| 297 |
return {sampling_size: gr.Slider(1, 5000, value=2000, label="Sampling Size in Rise", visible=bool, interactive=True)}
|
| 298 |
|
| 299 |
#minimalist theme
|
| 300 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 301 |
|
| 302 |
with gr.Tab(" Florrissant Fossils"):
|
| 303 |
gr.Markdown(HEADER)
|
|
@@ -305,12 +454,13 @@ with gr.Blocks(theme='sudeepshouche/minimalist') as demo:
|
|
| 305 |
with gr.Column():
|
| 306 |
gr.Markdown(USER_GUIDE)
|
| 307 |
with gr.Column(scale=2):
|
| 308 |
-
|
| 309 |
-
|
| 310 |
-
|
| 311 |
-
|
| 312 |
-
with gr.
|
| 313 |
-
|
|
|
|
| 314 |
|
| 315 |
gr.Markdown(CITATION)
|
| 316 |
|
|
@@ -404,10 +554,8 @@ with gr.Blocks(theme='sudeepshouche/minimalist') as demo:
|
|
| 404 |
with gr.Accordion('Closest Fossil Images'):
|
| 405 |
gr.Markdown("Finding 5 closest images in the dataset")
|
| 406 |
|
| 407 |
-
|
| 408 |
-
|
| 409 |
-
#.style(grid=[1, 5], height=200, width=200)
|
| 410 |
-
|
| 411 |
find_closest_btn = gr.Button("Find Closest Images",icon = "https://www.svgrepo.com/show/13672/play-button.svg")
|
| 412 |
|
| 413 |
#segment_button.click(segment_image, inputs=input_image, outputs=segmented_image)
|
|
@@ -448,15 +596,133 @@ with gr.Blocks(theme='sudeepshouche/minimalist') as demo:
|
|
| 448 |
|
| 449 |
#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])
|
| 450 |
def update_closest_outputs(input_image,model_name):
|
| 451 |
-
labels, images = find_closest(input_image,model_name)
|
| 452 |
-
|
| 453 |
-
#
|
| 454 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 455 |
for i in range(5):
|
| 456 |
-
|
| 457 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 458 |
|
| 459 |
-
find_closest_btn.click(fn=update_closest_outputs, inputs=[original_image,model_name], outputs=[
|
| 460 |
#classify_segmented_button.click(classify_image, inputs=[segmented_image,model_name], outputs=class_predicted)
|
| 461 |
|
| 462 |
generate_diagram.click(generate_diagram_closest, inputs=[original_image,model_name,top_k], outputs=diagram)
|
|
@@ -464,7 +730,7 @@ with gr.Blocks(theme='sudeepshouche/minimalist') as demo:
|
|
| 464 |
process_button.click(
|
| 465 |
fn=update_display,
|
| 466 |
inputs=input_image,
|
| 467 |
-
outputs=[original_image,input_image,workbench_image,instruction_text,model_name,explain_method,sampling_size,top_k,class_predicted,exp_gallery,
|
| 468 |
)
|
| 469 |
|
| 470 |
|
|
@@ -473,7 +739,7 @@ with gr.Blocks(theme='sudeepshouche/minimalist') as demo:
|
|
| 473 |
demo.queue() # manage multiple incoming requests
|
| 474 |
|
| 475 |
if os.getenv('SYSTEM') == 'spaces':
|
| 476 |
-
demo.launch(width='40%')
|
| 477 |
#,auth=(os.environ.get('USERNAME'), os.environ.get('PASSWORD'))
|
| 478 |
else:
|
| 479 |
-
demo.launch()
|
|
|
|
| 22 |
from inference_beit import get_triplet_model_beit
|
| 23 |
import pathlib
|
| 24 |
import tensorflow as tf
|
| 25 |
+
import pandas as pd
|
| 26 |
+
import re
|
| 27 |
+
import random
|
| 28 |
from closest_sample import get_images,get_diagram
|
| 29 |
|
| 30 |
|
|
|
|
| 58 |
"""
|
| 59 |
|
| 60 |
USER_GUIDE = """
|
| 61 |
+
<div class="user-guide-wrapper">
|
| 62 |
+
### ❗️ User Guide
|
| 63 |
+
|
| 64 |
+
Welcome to the interactive fossil exploration tool. Here's how to get started:
|
| 65 |
+
|
| 66 |
+
- **Upload an Image:** Drag and drop or choose from given samples to upload images of fossils.
|
| 67 |
+
- **Process Image:** After uploading, click the 'Process Image' button to analyze the image.
|
| 68 |
+
- **Explore Results:** Switch to the 'Workbench' tab to check out detailed analysis and results.
|
| 69 |
+
|
| 70 |
+
#### Tips
|
| 71 |
+
|
| 72 |
+
- Zoom into images on the workbench for finer details.
|
| 73 |
+
- Use the examples below as references for what types of images to upload.
|
| 74 |
+
|
| 75 |
+
Enjoy exploring! 🌟
|
| 76 |
+
</div>
|
| 77 |
+
"""
|
| 78 |
|
| 79 |
TIPS = """
|
| 80 |
## Tips
|
|
|
|
| 199 |
|
| 200 |
def find_closest(input_image,model_name):
|
| 201 |
embedding = get_embeddings(input_image,model_name)
|
| 202 |
+
classes, paths, filenames = get_images(embedding,model_name)
|
| 203 |
#outputs = classes+paths
|
| 204 |
+
return classes, paths, filenames
|
| 205 |
|
| 206 |
def generate_diagram_closest(input_image,model_name,top_k):
|
| 207 |
embedding = get_embeddings(input_image,model_name)
|
|
|
|
| 223 |
return classes,exp_list
|
| 224 |
|
| 225 |
def setup_examples():
|
| 226 |
+
"""
|
| 227 |
+
Setup example images from the CSV file with fossil responses.
|
| 228 |
+
Prioritizes 'Plausible' entries, then includes 'Not Sure' entries.
|
| 229 |
+
"""
|
| 230 |
+
# Use absolute path to ensure CSV is found regardless of working directory
|
| 231 |
+
csv_path = os.path.join(os.path.dirname(__file__), 'fossil_responses_with_images.csv')
|
| 232 |
+
fossil_samples = []
|
| 233 |
+
|
| 234 |
+
# Try to load from CSV first
|
| 235 |
+
print(f"DEBUG: Looking for CSV at: {csv_path}")
|
| 236 |
+
print(f"DEBUG: CSV exists: {os.path.exists(csv_path)}")
|
| 237 |
+
if os.path.exists(csv_path):
|
| 238 |
+
try:
|
| 239 |
+
df = pd.read_csv(csv_path)
|
| 240 |
+
print(f"DEBUG: CSV file found with {len(df)} rows")
|
| 241 |
+
|
| 242 |
+
# Extract URLs from HYPERLINK format: =HYPERLINK("url", "text")
|
| 243 |
+
def extract_url(hyperlink_str):
|
| 244 |
+
if pd.isna(hyperlink_str) or not hyperlink_str:
|
| 245 |
+
return None
|
| 246 |
+
# Convert to string and handle escaped quotes
|
| 247 |
+
url_str = str(hyperlink_str)
|
| 248 |
+
# Match URL - handle both escaped and unescaped quotes
|
| 249 |
+
# Pattern: https:// followed by characters until quote or comma
|
| 250 |
+
match = re.search(r'https://[^",\']+', url_str)
|
| 251 |
+
if match:
|
| 252 |
+
return match.group(0)
|
| 253 |
+
return None
|
| 254 |
+
|
| 255 |
+
# Filter entries with valid image URLs
|
| 256 |
+
df['Image_URL'] = df['Image URL'].apply(extract_url)
|
| 257 |
+
df_valid = df[df['Image_URL'].notna()].copy()
|
| 258 |
+
print(f"DEBUG: Found {len(df_valid)} entries with valid URLs")
|
| 259 |
+
|
| 260 |
+
if len(df_valid) > 0:
|
| 261 |
+
# Prioritize Plausible entries, then Not Sure
|
| 262 |
+
plausible = df_valid[df_valid['User Selection'] == 'Plausible'].head(15)
|
| 263 |
+
not_sure = df_valid[df_valid['User Selection'] == 'Not Sure'].head(8)
|
| 264 |
+
|
| 265 |
+
# Combine and use as fossil examples
|
| 266 |
+
fossil_samples = plausible['Image_URL'].tolist() + not_sure['Image_URL'].tolist()
|
| 267 |
+
|
| 268 |
+
# Shuffle the list to randomize the order
|
| 269 |
+
random.shuffle(fossil_samples)
|
| 270 |
+
|
| 271 |
+
print(f"DEBUG: Loaded {len(fossil_samples)} fossil examples from CSV (shuffled)")
|
| 272 |
+
print(f"DEBUG: - {len(plausible)} Plausible entries")
|
| 273 |
+
print(f"DEBUG: - {len(not_sure)} Not Sure entries")
|
| 274 |
+
if len(fossil_samples) > 0:
|
| 275 |
+
print(f"DEBUG: - Sample URL: {fossil_samples[0]}")
|
| 276 |
+
else:
|
| 277 |
+
print("DEBUG: No valid URLs found in CSV")
|
| 278 |
+
|
| 279 |
+
except Exception as e:
|
| 280 |
+
print(f"DEBUG: Error loading CSV examples: {e}")
|
| 281 |
+
import traceback
|
| 282 |
+
traceback.print_exc()
|
| 283 |
+
fossil_samples = []
|
| 284 |
+
else:
|
| 285 |
+
print(f"DEBUG: CSV file not found at {csv_path}")
|
| 286 |
+
|
| 287 |
+
# No fallback - only use CSV URLs
|
| 288 |
+
if not fossil_samples:
|
| 289 |
+
print("WARNING: No fossil samples loaded from CSV. Examples will be empty.")
|
| 290 |
+
|
| 291 |
+
# Gradio Examples can handle URLs directly - they will fetch and display the images
|
| 292 |
+
# Pass URLs as the first argument - Gradio will automatically fetch and display them
|
| 293 |
+
# Note: Gradio downloads URLs to temp directory, which is normal behavior
|
| 294 |
+
print(f"DEBUG: Final fossil_samples count: {len(fossil_samples)}")
|
| 295 |
+
if len(fossil_samples) > 0:
|
| 296 |
+
print(f"DEBUG: First fossil sample (should be URL): {fossil_samples[0]}")
|
| 297 |
+
print(f"DEBUG: Is URL: {fossil_samples[0].startswith('http') if fossil_samples else False}")
|
| 298 |
+
|
| 299 |
+
examples_fossils = gr.Examples(
|
| 300 |
+
fossil_samples,
|
| 301 |
+
inputs=input_image,
|
| 302 |
+
examples_per_page=6, # Reduced for better spacing and organization
|
| 303 |
+
label='Leaf fossil examples from the dataset',
|
| 304 |
+
elem_id="fossil-examples"
|
| 305 |
+
)
|
| 306 |
+
return examples_fossils
|
| 307 |
|
| 308 |
def preprocess_image(image, output_size=(300, 300)):
|
| 309 |
+
"""
|
| 310 |
+
Preprocess image for display.
|
| 311 |
+
Handles both numpy arrays and PIL images.
|
| 312 |
+
"""
|
| 313 |
+
# Convert PIL Image to numpy array if needed
|
| 314 |
+
if hasattr(image, 'size'): # PIL Image
|
| 315 |
+
image = np.array(image)
|
| 316 |
+
|
| 317 |
+
# Ensure image is a numpy array
|
| 318 |
+
if not isinstance(image, np.ndarray):
|
| 319 |
+
raise ValueError(f"Expected numpy array or PIL Image, got {type(image)}")
|
| 320 |
+
|
| 321 |
+
# Handle grayscale images (add channel dimension)
|
| 322 |
+
if len(image.shape) == 2:
|
| 323 |
+
image = cv2.cvtColor(image, cv2.COLOR_GRAY2BGR)
|
| 324 |
+
# Handle RGBA images (convert to RGB)
|
| 325 |
+
elif len(image.shape) == 3 and image.shape[2] == 4:
|
| 326 |
+
image = cv2.cvtColor(image, cv2.COLOR_RGBA2BGR)
|
| 327 |
+
# Ensure RGB images are converted to BGR for OpenCV
|
| 328 |
+
elif len(image.shape) == 3 and image.shape[2] == 3:
|
| 329 |
+
# Assume RGB, convert to BGR
|
| 330 |
+
image = cv2.cvtColor(image, cv2.COLOR_RGB2BGR)
|
| 331 |
+
|
| 332 |
#shape (height, width, channels)
|
| 333 |
h, w = image.shape[:2]
|
| 334 |
|
|
|
|
| 357 |
img_bright = cv2.cvtColor(final_hsv, cv2.COLOR_HSV2BGR)
|
| 358 |
return img_bright
|
| 359 |
def update_display(image):
|
| 360 |
+
if image is None:
|
| 361 |
+
return None, None, None, "Please upload or select an image first.", "Fossils 142", "Rise", 10, 50, None, None, None, None
|
| 362 |
+
|
| 363 |
+
try:
|
| 364 |
+
print(f"DEBUG: update_display called with image type: {type(image)}")
|
| 365 |
+
if hasattr(image, 'shape'):
|
| 366 |
+
print(f"DEBUG: Image shape: {image.shape}")
|
| 367 |
+
|
| 368 |
+
original_image = image
|
| 369 |
+
processed_image = preprocess_image(image)
|
| 370 |
+
|
| 371 |
+
# Convert BGR back to RGB for display (Gradio expects RGB)
|
| 372 |
+
if len(processed_image.shape) == 3:
|
| 373 |
+
processed_image = cv2.cvtColor(processed_image, cv2.COLOR_BGR2RGB)
|
| 374 |
+
|
| 375 |
+
instruction = "Image ready. Please switch to the 'Specimen Workbench' tab to check out further analysis and outputs."
|
| 376 |
+
print("DEBUG: Image processed successfully")
|
| 377 |
+
except Exception as e:
|
| 378 |
+
print(f"DEBUG: Error in update_display: {e}")
|
| 379 |
+
import traceback
|
| 380 |
+
traceback.print_exc()
|
| 381 |
+
return None, None, None, f"Error processing image: {str(e)}", "Fossils 142", "Rise", 10, 50, None, None, None, None
|
| 382 |
model_name = "Fossils 142"
|
| 383 |
|
| 384 |
# gr.Dropdown(
|
|
|
|
| 408 |
class_predicted = None # gr.Label(label='Class Predicted',num_top_classes=10)
|
| 409 |
exp_gallery = None
|
| 410 |
# 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)
|
| 411 |
+
closest_table = None
|
| 412 |
# gr.Gallery(label="Closest Images", show_label=False,elem_id="gallery",columns=[5], rows=[1],height='auto', allow_preview=True, preview=None)
|
| 413 |
diagram= None
|
| 414 |
# gr.Image(label = 'Bar Chart')
|
| 415 |
+
return original_image,processed_image,processed_image,instruction,model_name,explain_method,sampling_size,top_k,class_predicted,exp_gallery,closest_table,diagram
|
| 416 |
def update_slider_visibility(explain_method):
|
| 417 |
bool = explain_method=="Rise"
|
| 418 |
return {sampling_size: gr.Slider(1, 5000, value=2000, label="Sampling Size in Rise", visible=bool, interactive=True)}
|
| 419 |
|
| 420 |
#minimalist theme
|
| 421 |
+
custom_css = """
|
| 422 |
+
.user-guide-wrapper {
|
| 423 |
+
padding: 20px;
|
| 424 |
+
border-radius: 10px;
|
| 425 |
+
border: 1px solid rgba(128, 128, 128, 0.3);
|
| 426 |
+
background-color: #f0f0f0 !important;
|
| 427 |
+
}
|
| 428 |
+
.dark .user-guide-wrapper,
|
| 429 |
+
[data-theme*="dark"] .user-guide-wrapper,
|
| 430 |
+
.gradio-container.dark .user-guide-wrapper,
|
| 431 |
+
body.dark .user-guide-wrapper {
|
| 432 |
+
background-color: #1e1e1e !important;
|
| 433 |
+
color: #ffffff !important;
|
| 434 |
+
}
|
| 435 |
+
.dark .user-guide-wrapper h3,
|
| 436 |
+
.dark .user-guide-wrapper h4,
|
| 437 |
+
.dark .user-guide-wrapper p,
|
| 438 |
+
.dark .user-guide-wrapper ul,
|
| 439 |
+
.dark .user-guide-wrapper li,
|
| 440 |
+
[data-theme*="dark"] .user-guide-wrapper h3,
|
| 441 |
+
[data-theme*="dark"] .user-guide-wrapper h4,
|
| 442 |
+
[data-theme*="dark"] .user-guide-wrapper p,
|
| 443 |
+
[data-theme*="dark"] .user-guide-wrapper ul,
|
| 444 |
+
[data-theme*="dark"] .user-guide-wrapper li {
|
| 445 |
+
color: #ffffff !important;
|
| 446 |
+
}
|
| 447 |
+
"""
|
| 448 |
+
|
| 449 |
+
with gr.Blocks(theme='sudeepshouche/minimalist', css=custom_css) as demo:
|
| 450 |
|
| 451 |
with gr.Tab(" Florrissant Fossils"):
|
| 452 |
gr.Markdown(HEADER)
|
|
|
|
| 454 |
with gr.Column():
|
| 455 |
gr.Markdown(USER_GUIDE)
|
| 456 |
with gr.Column(scale=2):
|
| 457 |
+
instruction_text = gr.Textbox(label="Instructions", value="Upload/Choose an image and click 'Process Image'.")
|
| 458 |
+
input_image = gr.Image(label="Input",width="100%",container=True)
|
| 459 |
+
process_button = gr.Button("Process Image",icon = "https://www.svgrepo.com/show/13672/play-button.svg")
|
| 460 |
+
with gr.Column(scale=1):
|
| 461 |
+
with gr.Accordion("📸 Example Fossils", open=True):
|
| 462 |
+
gr.Markdown("<p style='font-size: 14px; margin-bottom: 10px;'>Click on any example below to load it:</p>")
|
| 463 |
+
examples_fossils = setup_examples()
|
| 464 |
|
| 465 |
gr.Markdown(CITATION)
|
| 466 |
|
|
|
|
| 554 |
with gr.Accordion('Closest Fossil Images'):
|
| 555 |
gr.Markdown("Finding 5 closest images in the dataset")
|
| 556 |
|
| 557 |
+
closest_table = gr.HTML(label="Closest Images Table")
|
| 558 |
+
|
|
|
|
|
|
|
| 559 |
find_closest_btn = gr.Button("Find Closest Images",icon = "https://www.svgrepo.com/show/13672/play-button.svg")
|
| 560 |
|
| 561 |
#segment_button.click(segment_image, inputs=input_image, outputs=segmented_image)
|
|
|
|
| 596 |
|
| 597 |
#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])
|
| 598 |
def update_closest_outputs(input_image,model_name):
|
| 599 |
+
labels, images, filenames = find_closest(input_image,model_name)
|
| 600 |
+
|
| 601 |
+
# Create HTML table with images and full specimen names
|
| 602 |
+
table_html = """
|
| 603 |
+
<style>
|
| 604 |
+
.closest-images-table {
|
| 605 |
+
width: 100%;
|
| 606 |
+
border-collapse: collapse;
|
| 607 |
+
margin: 20px 0;
|
| 608 |
+
}
|
| 609 |
+
.closest-images-table th {
|
| 610 |
+
background-color: #f0f0f0;
|
| 611 |
+
padding: 12px;
|
| 612 |
+
text-align: left;
|
| 613 |
+
border: 1px solid #ddd;
|
| 614 |
+
font-weight: bold;
|
| 615 |
+
}
|
| 616 |
+
.closest-images-table td {
|
| 617 |
+
padding: 12px;
|
| 618 |
+
border: 1px solid #ddd;
|
| 619 |
+
vertical-align: middle;
|
| 620 |
+
}
|
| 621 |
+
.closest-images-table tr:nth-child(even) {
|
| 622 |
+
background-color: inherit;
|
| 623 |
+
}
|
| 624 |
+
.closest-images-table img {
|
| 625 |
+
max-width: 200px;
|
| 626 |
+
max-height: 200px;
|
| 627 |
+
object-fit: contain;
|
| 628 |
+
border-radius: 4px;
|
| 629 |
+
display: block;
|
| 630 |
+
margin: 0 auto;
|
| 631 |
+
}
|
| 632 |
+
.specimen-name {
|
| 633 |
+
font-size: 16px;
|
| 634 |
+
font-weight: bold;
|
| 635 |
+
color: #0066cc;
|
| 636 |
+
font-family: monospace;
|
| 637 |
+
}
|
| 638 |
+
.plant-family {
|
| 639 |
+
font-size: 14px;
|
| 640 |
+
font-weight: 500;
|
| 641 |
+
}
|
| 642 |
+
</style>
|
| 643 |
+
<table class="closest-images-table">
|
| 644 |
+
<thead>
|
| 645 |
+
<tr>
|
| 646 |
+
<th>Rank</th>
|
| 647 |
+
<th>Image</th>
|
| 648 |
+
<th>Plant Family</th>
|
| 649 |
+
<th>Specimen Name</th>
|
| 650 |
+
</tr>
|
| 651 |
+
</thead>
|
| 652 |
+
<tbody>
|
| 653 |
+
"""
|
| 654 |
+
|
| 655 |
+
import os
|
| 656 |
+
import base64
|
| 657 |
+
from PIL import Image
|
| 658 |
+
import numpy as np
|
| 659 |
+
|
| 660 |
for i in range(5):
|
| 661 |
+
rank = i + 1
|
| 662 |
+
# Handle image - convert to base64 for HTML display
|
| 663 |
+
img_src = ""
|
| 664 |
+
|
| 665 |
+
if isinstance(images[i], str) and os.path.exists(images[i]):
|
| 666 |
+
# Local file path - convert to base64
|
| 667 |
+
try:
|
| 668 |
+
with open(images[i], 'rb') as f:
|
| 669 |
+
img_data = f.read()
|
| 670 |
+
img_base64 = base64.b64encode(img_data).decode('utf-8')
|
| 671 |
+
img_src = f"data:image/jpeg;base64,{img_base64}"
|
| 672 |
+
except Exception as e:
|
| 673 |
+
print(f"Error loading image {images[i]}: {e}")
|
| 674 |
+
img_src = ""
|
| 675 |
+
elif isinstance(images[i], np.ndarray):
|
| 676 |
+
# NumPy array - convert to PIL and then base64
|
| 677 |
+
try:
|
| 678 |
+
img = Image.fromarray(images[i])
|
| 679 |
+
import io
|
| 680 |
+
buffer = io.BytesIO()
|
| 681 |
+
img.save(buffer, format='JPEG')
|
| 682 |
+
img_base64 = base64.b64encode(buffer.getvalue()).decode('utf-8')
|
| 683 |
+
img_src = f"data:image/jpeg;base64,{img_base64}"
|
| 684 |
+
except Exception as e:
|
| 685 |
+
print(f"Error converting numpy array to image: {e}")
|
| 686 |
+
img_src = ""
|
| 687 |
+
elif hasattr(images[i], 'save'):
|
| 688 |
+
# PIL Image
|
| 689 |
+
try:
|
| 690 |
+
import io
|
| 691 |
+
buffer = io.BytesIO()
|
| 692 |
+
images[i].save(buffer, format='JPEG')
|
| 693 |
+
img_base64 = base64.b64encode(buffer.getvalue()).decode('utf-8')
|
| 694 |
+
img_src = f"data:image/jpeg;base64,{img_base64}"
|
| 695 |
+
except Exception as e:
|
| 696 |
+
print(f"Error converting PIL image: {e}")
|
| 697 |
+
img_src = ""
|
| 698 |
+
|
| 699 |
+
plant_family = labels[i] if labels[i] else "Unknown"
|
| 700 |
+
specimen_name = filenames[i] if (i < len(filenames) and filenames[i] and len(filenames[i]) > 0) else "N/A"
|
| 701 |
+
|
| 702 |
+
# Debug output
|
| 703 |
+
print(f"DEBUG: Rank {rank} - Family: {plant_family}, Specimen: {specimen_name}, Image: {images[i]}")
|
| 704 |
+
print(f"DEBUG: filenames array length: {len(filenames)}, filenames[{i}]: {filenames[i] if i < len(filenames) else 'OUT OF RANGE'}")
|
| 705 |
+
|
| 706 |
+
table_html += f"""
|
| 707 |
+
<tr>
|
| 708 |
+
<td style="text-align: center; font-weight: bold; width: 60px; font-size: 18px;">{rank}</td>
|
| 709 |
+
<td style="text-align: center;">
|
| 710 |
+
<img src="{img_src}" alt="Closest image {rank}" />
|
| 711 |
+
<div style="margin-top: 8px; font-size: 12px; color: #666; word-break: break-all;">{specimen_name}</div>
|
| 712 |
+
</td>
|
| 713 |
+
<td class="plant-family">{plant_family}</td>
|
| 714 |
+
<td class="specimen-name" style="word-break: break-all;">{specimen_name}</td>
|
| 715 |
+
</tr>
|
| 716 |
+
"""
|
| 717 |
+
|
| 718 |
+
table_html += """
|
| 719 |
+
</tbody>
|
| 720 |
+
</table>
|
| 721 |
+
"""
|
| 722 |
+
|
| 723 |
+
return table_html
|
| 724 |
|
| 725 |
+
find_closest_btn.click(fn=update_closest_outputs, inputs=[original_image,model_name], outputs=[closest_table])
|
| 726 |
#classify_segmented_button.click(classify_image, inputs=[segmented_image,model_name], outputs=class_predicted)
|
| 727 |
|
| 728 |
generate_diagram.click(generate_diagram_closest, inputs=[original_image,model_name,top_k], outputs=diagram)
|
|
|
|
| 730 |
process_button.click(
|
| 731 |
fn=update_display,
|
| 732 |
inputs=input_image,
|
| 733 |
+
outputs=[original_image,input_image,workbench_image,instruction_text,model_name,explain_method,sampling_size,top_k,class_predicted,exp_gallery,closest_table,diagram]
|
| 734 |
)
|
| 735 |
|
| 736 |
|
|
|
|
| 739 |
demo.queue() # manage multiple incoming requests
|
| 740 |
|
| 741 |
if os.getenv('SYSTEM') == 'spaces':
|
| 742 |
+
demo.launch(width='40%', debug=True)
|
| 743 |
#,auth=(os.environ.get('USERNAME'), os.environ.get('PASSWORD'))
|
| 744 |
else:
|
| 745 |
+
demo.launch(debug=True)
|
closest_sample.py
CHANGED
|
@@ -9,6 +9,86 @@ import matplotlib.pyplot as plt
|
|
| 9 |
from collections import Counter
|
| 10 |
|
| 11 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 12 |
if not os.path.exists('dataset'):
|
| 13 |
REPO_ID='Serrelab/Fossils'
|
| 14 |
token = os.environ.get('READ_TOKEN')
|
|
@@ -55,17 +135,18 @@ def download_public_image(url, destination_path):
|
|
| 55 |
def get_images(embedding,model_name):
|
| 56 |
|
| 57 |
if model_name in ['Rock 170','Mummified 170']:
|
| 58 |
-
pca_fossils =
|
| 59 |
-
pca_leaves =
|
| 60 |
embedding_fossils = np.load('dataset/embedding_fossils_170_finer.npy')
|
| 61 |
#embedding_leaves = np.load('embedding_leaves.npy')
|
| 62 |
elif model_name in ['Fossils 142']:
|
| 63 |
-
pca_fossils =
|
| 64 |
-
pca_leaves =
|
| 65 |
embedding_fossils = np.load('dataset/embedding_fossils_142_finer.npy')
|
| 66 |
#embedding_leaves = np.load('embedding_leaves.npy')
|
| 67 |
else:
|
| 68 |
print(f'{model_name} not recognized')
|
|
|
|
| 69 |
#pca_embedding_fossils = pca_fossils.transform(embedding_fossils[:,-1])
|
| 70 |
|
| 71 |
pca_d =pca_distance(pca_fossils,embedding,embedding_fossils,top_k=5)
|
|
@@ -80,40 +161,61 @@ def get_images(embedding,model_name):
|
|
| 80 |
|
| 81 |
local_paths = []
|
| 82 |
classes = []
|
|
|
|
| 83 |
for i, path in enumerate(paths):
|
| 84 |
local_file_path = f'image_{i}.jpg'
|
|
|
|
| 85 |
if 'Florissant_Fossil/512/full/jpg/' in path:
|
| 86 |
public_path = path.replace('/gpfs/data/tserre/irodri15/Fossils/new_data/leavesdb-v1_1/images/Fossil/Florissant_Fossil/512/full/jpg/', folder_florissant)
|
| 87 |
elif 'General_Fossil/512/full/jpg/' in path:
|
| 88 |
public_path = path.replace('/gpfs/data/tserre/irodri15/Fossils/new_data/leavesdb-v1_1/images/Fossil/General_Fossil/512/full/jpg/', folder_general)
|
| 89 |
else:
|
| 90 |
print("no match found")
|
| 91 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 92 |
download_public_image(public_path, local_file_path)
|
| 93 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
| 94 |
parts = [part for part in public_path.split('/') if part]
|
| 95 |
-
part = parts[-2]
|
| 96 |
classes.append(part)
|
| 97 |
local_paths.append(local_file_path)
|
| 98 |
#paths= [path.replace('/gpfs/data/tserre/irodri15/Fossils/new_data/leavesdb-v1_1/images/Fossil/Florissant_Fossil/512/full/jpg/',
|
| 99 |
# '/media/data_cifs/projects/prj_fossils/data/processed_data/leavesdb-v1_1/images/Fossil/Florissant_Fossil/original/full/jpg/') for path in paths]
|
| 100 |
|
| 101 |
-
return classes, local_paths
|
| 102 |
|
| 103 |
def get_diagram(embedding,top_k,model_name):
|
| 104 |
|
| 105 |
if model_name in ['Rock 170','Mummified 170']:
|
| 106 |
-
pca_fossils =
|
| 107 |
-
pca_leaves =
|
| 108 |
embedding_fossils = np.load('dataset/embedding_fossils_170_finer.npy')
|
| 109 |
#embedding_leaves = np.load('embedding_leaves.npy')
|
| 110 |
elif model_name in ['Fossils 142']:
|
| 111 |
-
pca_fossils =
|
| 112 |
-
pca_leaves =
|
| 113 |
embedding_fossils = np.load('dataset/embedding_fossils_142_finer.npy')
|
| 114 |
#embedding_leaves = np.load('embedding_leaves.npy')
|
| 115 |
else:
|
| 116 |
print(f'{model_name} not recognized')
|
|
|
|
| 117 |
|
| 118 |
#pca_embedding_fossils = pca_fossils.transform(embedding_fossils[:,-1])
|
| 119 |
|
|
|
|
| 9 |
from collections import Counter
|
| 10 |
|
| 11 |
|
| 12 |
+
def is_git_lfs_pointer(filepath):
|
| 13 |
+
"""Check if a file is a Git LFS pointer file instead of actual binary data."""
|
| 14 |
+
try:
|
| 15 |
+
with open(filepath, 'r') as f:
|
| 16 |
+
first_line = f.readline().strip()
|
| 17 |
+
return first_line == 'version https://git-lfs.github.com/spec/v1'
|
| 18 |
+
except:
|
| 19 |
+
return False
|
| 20 |
+
|
| 21 |
+
|
| 22 |
+
def load_pickle_safe(filepath):
|
| 23 |
+
"""Safely load a pickle file, checking if it's a Git LFS pointer."""
|
| 24 |
+
if not os.path.exists(filepath):
|
| 25 |
+
raise FileNotFoundError(f"Pickle file not found: {filepath}")
|
| 26 |
+
|
| 27 |
+
if is_git_lfs_pointer(filepath):
|
| 28 |
+
print(f"Warning: {filepath} is a Git LFS pointer file. Attempting to download actual file...")
|
| 29 |
+
import subprocess
|
| 30 |
+
import sys
|
| 31 |
+
|
| 32 |
+
# Try to download using git lfs pull
|
| 33 |
+
try:
|
| 34 |
+
# Get the directory of the file
|
| 35 |
+
file_dir = os.path.dirname(os.path.abspath(filepath))
|
| 36 |
+
file_name = os.path.basename(filepath)
|
| 37 |
+
|
| 38 |
+
# Try git lfs pull in the file's directory
|
| 39 |
+
result = subprocess.run(
|
| 40 |
+
['git', 'lfs', 'pull', '--include', file_name],
|
| 41 |
+
cwd=file_dir if file_dir else '.',
|
| 42 |
+
capture_output=True,
|
| 43 |
+
text=True,
|
| 44 |
+
timeout=60
|
| 45 |
+
)
|
| 46 |
+
|
| 47 |
+
if result.returncode == 0:
|
| 48 |
+
print(f"Successfully downloaded {filepath} from Git LFS")
|
| 49 |
+
# Check again if it's still a pointer
|
| 50 |
+
if is_git_lfs_pointer(filepath):
|
| 51 |
+
raise ValueError(
|
| 52 |
+
f"Error: {filepath} is still a Git LFS pointer after pull attempt.\n"
|
| 53 |
+
f"Please ensure Git LFS is properly configured:\n"
|
| 54 |
+
f" 1. Run 'git lfs install'\n"
|
| 55 |
+
f" 2. Run 'git lfs pull' in the repository root"
|
| 56 |
+
)
|
| 57 |
+
else:
|
| 58 |
+
raise ValueError(
|
| 59 |
+
f"Error: {filepath} is a Git LFS pointer file.\n"
|
| 60 |
+
f"Failed to download using 'git lfs pull': {result.stderr}\n"
|
| 61 |
+
f"Please manually download the file:\n"
|
| 62 |
+
f" cd {file_dir if file_dir else '.'}\n"
|
| 63 |
+
f" git lfs pull --include {file_name}"
|
| 64 |
+
)
|
| 65 |
+
except subprocess.TimeoutExpired:
|
| 66 |
+
raise ValueError(
|
| 67 |
+
f"Timeout while trying to download {filepath} from Git LFS.\n"
|
| 68 |
+
f"Please manually run: git lfs pull"
|
| 69 |
+
)
|
| 70 |
+
except FileNotFoundError:
|
| 71 |
+
raise ValueError(
|
| 72 |
+
f"Error: {filepath} is a Git LFS pointer file, but 'git' command not found.\n"
|
| 73 |
+
f"Please install Git LFS and run 'git lfs pull'"
|
| 74 |
+
)
|
| 75 |
+
except Exception as e:
|
| 76 |
+
raise ValueError(
|
| 77 |
+
f"Error: {filepath} is a Git LFS pointer file.\n"
|
| 78 |
+
f"Failed to download automatically: {e}\n"
|
| 79 |
+
f"Please manually run: git lfs pull"
|
| 80 |
+
)
|
| 81 |
+
|
| 82 |
+
try:
|
| 83 |
+
with open(filepath, 'rb') as f:
|
| 84 |
+
return pk.load(f)
|
| 85 |
+
except pk.UnpicklingError as e:
|
| 86 |
+
raise ValueError(
|
| 87 |
+
f"Error loading pickle file {filepath}: {e}\n"
|
| 88 |
+
f"This might be a Git LFS pointer file. Please ensure Git LFS is installed and run 'git lfs pull'."
|
| 89 |
+
)
|
| 90 |
+
|
| 91 |
+
|
| 92 |
if not os.path.exists('dataset'):
|
| 93 |
REPO_ID='Serrelab/Fossils'
|
| 94 |
token = os.environ.get('READ_TOKEN')
|
|
|
|
| 135 |
def get_images(embedding,model_name):
|
| 136 |
|
| 137 |
if model_name in ['Rock 170','Mummified 170']:
|
| 138 |
+
pca_fossils = load_pickle_safe('pca_fossils_170_finer.pkl')
|
| 139 |
+
pca_leaves = load_pickle_safe('pca_leaves_170_finer.pkl')
|
| 140 |
embedding_fossils = np.load('dataset/embedding_fossils_170_finer.npy')
|
| 141 |
#embedding_leaves = np.load('embedding_leaves.npy')
|
| 142 |
elif model_name in ['Fossils 142']:
|
| 143 |
+
pca_fossils = load_pickle_safe('pca_fossils_142_resnet.pkl')
|
| 144 |
+
pca_leaves = load_pickle_safe('pca_leaves_142_resnet.pkl')
|
| 145 |
embedding_fossils = np.load('dataset/embedding_fossils_142_finer.npy')
|
| 146 |
#embedding_leaves = np.load('embedding_leaves.npy')
|
| 147 |
else:
|
| 148 |
print(f'{model_name} not recognized')
|
| 149 |
+
raise ValueError(f'{model_name} not recognized')
|
| 150 |
#pca_embedding_fossils = pca_fossils.transform(embedding_fossils[:,-1])
|
| 151 |
|
| 152 |
pca_d =pca_distance(pca_fossils,embedding,embedding_fossils,top_k=5)
|
|
|
|
| 161 |
|
| 162 |
local_paths = []
|
| 163 |
classes = []
|
| 164 |
+
filenames = []
|
| 165 |
for i, path in enumerate(paths):
|
| 166 |
local_file_path = f'image_{i}.jpg'
|
| 167 |
+
public_path = None
|
| 168 |
if 'Florissant_Fossil/512/full/jpg/' in path:
|
| 169 |
public_path = path.replace('/gpfs/data/tserre/irodri15/Fossils/new_data/leavesdb-v1_1/images/Fossil/Florissant_Fossil/512/full/jpg/', folder_florissant)
|
| 170 |
elif 'General_Fossil/512/full/jpg/' in path:
|
| 171 |
public_path = path.replace('/gpfs/data/tserre/irodri15/Fossils/new_data/leavesdb-v1_1/images/Fossil/General_Fossil/512/full/jpg/', folder_general)
|
| 172 |
else:
|
| 173 |
print("no match found")
|
| 174 |
+
filenames.append("") # Empty filename if no match
|
| 175 |
+
classes.append("Unknown")
|
| 176 |
+
local_paths.append("")
|
| 177 |
+
continue
|
| 178 |
+
|
| 179 |
+
# Extract the full specimen name from the original path using split('/')[-1]
|
| 180 |
+
# e.g., /gpfs/.../Fabaceae/Fabaceae_Robinia_lesquereuxi_Florissant_FLFO_002604B.jpg
|
| 181 |
+
# -> Fabaceae_Robinia_lesquereuxi_Florissant_FLFO_002604B.jpg (then remove extension)
|
| 182 |
+
import os
|
| 183 |
+
original_filename = path.split('/')[-1] # Get the last part of the path (filename)
|
| 184 |
+
full_specimen_name = os.path.splitext(original_filename)[0] # Remove extension
|
| 185 |
+
|
| 186 |
+
print(f"Original path: {path}")
|
| 187 |
+
print(f"Full specimen name: {full_specimen_name}")
|
| 188 |
+
print(f"Public path: {public_path}")
|
| 189 |
download_public_image(public_path, local_file_path)
|
| 190 |
+
|
| 191 |
+
# Use the full specimen name from the original filename
|
| 192 |
+
filenames.append(full_specimen_name)
|
| 193 |
+
|
| 194 |
+
# Extract plant family from public_path for classes
|
| 195 |
parts = [part for part in public_path.split('/') if part]
|
| 196 |
+
part = parts[-2] # Plant family is the folder name in the URL
|
| 197 |
classes.append(part)
|
| 198 |
local_paths.append(local_file_path)
|
| 199 |
#paths= [path.replace('/gpfs/data/tserre/irodri15/Fossils/new_data/leavesdb-v1_1/images/Fossil/Florissant_Fossil/512/full/jpg/',
|
| 200 |
# '/media/data_cifs/projects/prj_fossils/data/processed_data/leavesdb-v1_1/images/Fossil/Florissant_Fossil/original/full/jpg/') for path in paths]
|
| 201 |
|
| 202 |
+
return classes, local_paths, filenames
|
| 203 |
|
| 204 |
def get_diagram(embedding,top_k,model_name):
|
| 205 |
|
| 206 |
if model_name in ['Rock 170','Mummified 170']:
|
| 207 |
+
pca_fossils = load_pickle_safe('pca_fossils_170_finer.pkl')
|
| 208 |
+
pca_leaves = load_pickle_safe('pca_leaves_170_finer.pkl')
|
| 209 |
embedding_fossils = np.load('dataset/embedding_fossils_170_finer.npy')
|
| 210 |
#embedding_leaves = np.load('embedding_leaves.npy')
|
| 211 |
elif model_name in ['Fossils 142']:
|
| 212 |
+
pca_fossils = load_pickle_safe('pca_fossils_142_resnet.pkl')
|
| 213 |
+
pca_leaves = load_pickle_safe('pca_leaves_142_resnet.pkl')
|
| 214 |
embedding_fossils = np.load('dataset/embedding_fossils_142_finer.npy')
|
| 215 |
#embedding_leaves = np.load('embedding_leaves.npy')
|
| 216 |
else:
|
| 217 |
print(f'{model_name} not recognized')
|
| 218 |
+
raise ValueError(f'{model_name} not recognized')
|
| 219 |
|
| 220 |
#pca_embedding_fossils = pca_fossils.transform(embedding_fossils[:,-1])
|
| 221 |
|
create_fossil_csv.py
ADDED
|
@@ -0,0 +1,207 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
#!/usr/bin/env python3
|
| 2 |
+
"""
|
| 3 |
+
Create CSV file from JSON response files and HTML image links.
|
| 4 |
+
|
| 5 |
+
This script:
|
| 6 |
+
1. Parses all JSON files from ../Unknown/ directory
|
| 7 |
+
2. Filters entries where User Selection is not null and not "Not Applicable"
|
| 8 |
+
3. Extracts image URLs from index.html by matching fossil names
|
| 9 |
+
4. Creates a CSV file with Serial Number, Fossil Name, User Selection, and Image URL
|
| 10 |
+
"""
|
| 11 |
+
|
| 12 |
+
import json
|
| 13 |
+
import os
|
| 14 |
+
import glob
|
| 15 |
+
import re
|
| 16 |
+
import csv
|
| 17 |
+
from typing import List, Dict, Optional
|
| 18 |
+
from collections import defaultdict
|
| 19 |
+
|
| 20 |
+
# Paths
|
| 21 |
+
SCRIPT_DIR = os.path.dirname(os.path.abspath(__file__))
|
| 22 |
+
UNKNOWN_DIR = os.path.join(os.path.dirname(SCRIPT_DIR), "Unknown")
|
| 23 |
+
HTML_FILE = os.path.join(UNKNOWN_DIR, "index.html")
|
| 24 |
+
OUTPUT_CSV = os.path.join(SCRIPT_DIR, "fossil_responses_with_images.csv")
|
| 25 |
+
|
| 26 |
+
|
| 27 |
+
def load_json_files(json_dir: str) -> List[Dict]:
|
| 28 |
+
"""
|
| 29 |
+
Load all JSON response files and extract valid entries.
|
| 30 |
+
|
| 31 |
+
Args:
|
| 32 |
+
json_dir: Directory containing JSON files
|
| 33 |
+
|
| 34 |
+
Returns:
|
| 35 |
+
List of dictionaries with Serial Number, Fossil Name, User Selection
|
| 36 |
+
"""
|
| 37 |
+
all_entries = []
|
| 38 |
+
json_files = glob.glob(os.path.join(json_dir, "unidentified_fossil_responses*.json"))
|
| 39 |
+
|
| 40 |
+
print(f"Found {len(json_files)} JSON files")
|
| 41 |
+
|
| 42 |
+
for json_file in json_files:
|
| 43 |
+
try:
|
| 44 |
+
with open(json_file, 'r', encoding='utf-8') as f:
|
| 45 |
+
data = json.load(f)
|
| 46 |
+
|
| 47 |
+
# Filter entries: exclude null, "Not Applicable", and "Impossible"
|
| 48 |
+
valid_entries = [
|
| 49 |
+
entry for entry in data
|
| 50 |
+
if entry.get("User Selection") is not None
|
| 51 |
+
and entry.get("User Selection") != "Not Applicable"
|
| 52 |
+
and entry.get("User Selection") != "Impossible"
|
| 53 |
+
]
|
| 54 |
+
|
| 55 |
+
all_entries.extend(valid_entries)
|
| 56 |
+
print(f" {os.path.basename(json_file)}: {len(valid_entries)} valid entries")
|
| 57 |
+
|
| 58 |
+
except Exception as e:
|
| 59 |
+
print(f"Error loading {json_file}: {e}")
|
| 60 |
+
continue
|
| 61 |
+
|
| 62 |
+
# Remove duplicates based on Serial Number and Fossil Name combination
|
| 63 |
+
seen = set()
|
| 64 |
+
unique_entries = []
|
| 65 |
+
for entry in all_entries:
|
| 66 |
+
key = (entry.get("Serial Number"), entry.get("Fossil Name"))
|
| 67 |
+
if key not in seen:
|
| 68 |
+
seen.add(key)
|
| 69 |
+
unique_entries.append(entry)
|
| 70 |
+
else:
|
| 71 |
+
# If duplicate, keep the one with a User Selection (prefer non-null)
|
| 72 |
+
existing_idx = next(i for i, e in enumerate(unique_entries) if (e.get("Serial Number"), e.get("Fossil Name")) == key)
|
| 73 |
+
if entry.get("User Selection") and not unique_entries[existing_idx].get("User Selection"):
|
| 74 |
+
unique_entries[existing_idx] = entry
|
| 75 |
+
|
| 76 |
+
print(f"\nTotal unique valid entries: {len(unique_entries)}")
|
| 77 |
+
return unique_entries
|
| 78 |
+
|
| 79 |
+
|
| 80 |
+
def extract_image_urls_from_html(html_file: str) -> Dict[str, str]:
|
| 81 |
+
"""
|
| 82 |
+
Extract image URLs from HTML file by parsing img tags with fossil-image class.
|
| 83 |
+
Uses line-by-line parsing for better performance on large files.
|
| 84 |
+
|
| 85 |
+
Args:
|
| 86 |
+
html_file: Path to index.html file
|
| 87 |
+
|
| 88 |
+
Returns:
|
| 89 |
+
Dictionary mapping fossil_name to image_url
|
| 90 |
+
"""
|
| 91 |
+
image_urls = {}
|
| 92 |
+
|
| 93 |
+
if not os.path.exists(html_file):
|
| 94 |
+
print(f"Warning: HTML file not found: {html_file}")
|
| 95 |
+
return image_urls
|
| 96 |
+
|
| 97 |
+
print(f"\nParsing HTML file: {html_file}")
|
| 98 |
+
|
| 99 |
+
try:
|
| 100 |
+
# Use line-by-line parsing for better performance
|
| 101 |
+
current_fossil_name = None
|
| 102 |
+
|
| 103 |
+
with open(html_file, 'r', encoding='utf-8') as f:
|
| 104 |
+
for line in f:
|
| 105 |
+
# Look for fossil name in fossil-name td
|
| 106 |
+
fossil_name_match = re.search(r'<td class="fossil-name">.*?>(.*?)</a>', line)
|
| 107 |
+
if fossil_name_match:
|
| 108 |
+
fossil_name = re.sub(r'<[^>]+>', '', fossil_name_match.group(1)).strip()
|
| 109 |
+
if fossil_name:
|
| 110 |
+
current_fossil_name = fossil_name
|
| 111 |
+
|
| 112 |
+
# Look for image URL in fossil-image td
|
| 113 |
+
image_match = re.search(r'<td class="fossil-image"><img src="(https://storage\.googleapis\.com/serrelab/fossil_lens/inference_concepts2/[^"]+)"', line)
|
| 114 |
+
if image_match and current_fossil_name:
|
| 115 |
+
image_url = image_match.group(1)
|
| 116 |
+
image_urls[current_fossil_name] = image_url
|
| 117 |
+
current_fossil_name = None # Reset after finding image
|
| 118 |
+
|
| 119 |
+
print(f"Extracted {len(image_urls)} image URLs from HTML")
|
| 120 |
+
|
| 121 |
+
except Exception as e:
|
| 122 |
+
print(f"Error parsing HTML file: {e}")
|
| 123 |
+
import traceback
|
| 124 |
+
traceback.print_exc()
|
| 125 |
+
|
| 126 |
+
return image_urls
|
| 127 |
+
|
| 128 |
+
|
| 129 |
+
def create_csv(entries: List[Dict], image_urls: Dict[str, str], output_file: str):
|
| 130 |
+
"""
|
| 131 |
+
Create CSV file with fossil data and image URLs.
|
| 132 |
+
|
| 133 |
+
Args:
|
| 134 |
+
entries: List of fossil entries from JSON files
|
| 135 |
+
image_urls: Dictionary mapping fossil names to image URLs
|
| 136 |
+
output_file: Path to output CSV file
|
| 137 |
+
"""
|
| 138 |
+
print(f"\nCreating CSV file: {output_file}")
|
| 139 |
+
|
| 140 |
+
# Sort entries by Serial Number
|
| 141 |
+
entries.sort(key=lambda x: x.get("Serial Number", 0))
|
| 142 |
+
|
| 143 |
+
# Count matches
|
| 144 |
+
matched_count = 0
|
| 145 |
+
unmatched_count = 0
|
| 146 |
+
|
| 147 |
+
with open(output_file, 'w', newline='', encoding='utf-8') as csvfile:
|
| 148 |
+
fieldnames = ['Serial Number', 'Fossil Name', 'User Selection', 'Image URL']
|
| 149 |
+
writer = csv.DictWriter(csvfile, fieldnames=fieldnames)
|
| 150 |
+
|
| 151 |
+
writer.writeheader()
|
| 152 |
+
|
| 153 |
+
for entry in entries:
|
| 154 |
+
fossil_name = entry.get("Fossil Name", "")
|
| 155 |
+
image_url = image_urls.get(fossil_name, "")
|
| 156 |
+
|
| 157 |
+
if image_url:
|
| 158 |
+
matched_count += 1
|
| 159 |
+
else:
|
| 160 |
+
unmatched_count += 1
|
| 161 |
+
|
| 162 |
+
# Format as Excel hyperlink: =HYPERLINK("url", "View Image")
|
| 163 |
+
if image_url:
|
| 164 |
+
formatted_url = f'=HYPERLINK("{image_url}", "View Image")'
|
| 165 |
+
else:
|
| 166 |
+
formatted_url = ""
|
| 167 |
+
|
| 168 |
+
writer.writerow({
|
| 169 |
+
'Serial Number': entry.get("Serial Number", ""),
|
| 170 |
+
'Fossil Name': fossil_name,
|
| 171 |
+
'User Selection': entry.get("User Selection", ""),
|
| 172 |
+
'Image URL': formatted_url
|
| 173 |
+
})
|
| 174 |
+
|
| 175 |
+
print(f"\nCSV file created successfully!")
|
| 176 |
+
print(f" Total entries: {len(entries)}")
|
| 177 |
+
print(f" Matched with image URLs: {matched_count}")
|
| 178 |
+
print(f" Unmatched (no image URL): {unmatched_count}")
|
| 179 |
+
|
| 180 |
+
|
| 181 |
+
def main():
|
| 182 |
+
"""Main function to orchestrate the CSV creation process."""
|
| 183 |
+
print("=" * 60)
|
| 184 |
+
print("Creating CSV from JSON responses and HTML image links")
|
| 185 |
+
print("=" * 60)
|
| 186 |
+
|
| 187 |
+
# Step 1: Load and filter JSON files
|
| 188 |
+
entries = load_json_files(UNKNOWN_DIR)
|
| 189 |
+
|
| 190 |
+
if not entries:
|
| 191 |
+
print("No valid entries found. Exiting.")
|
| 192 |
+
return
|
| 193 |
+
|
| 194 |
+
# Step 2: Extract image URLs from HTML
|
| 195 |
+
image_urls = extract_image_urls_from_html(HTML_FILE)
|
| 196 |
+
|
| 197 |
+
# Step 3: Create CSV file
|
| 198 |
+
create_csv(entries, image_urls, OUTPUT_CSV)
|
| 199 |
+
|
| 200 |
+
print("\n" + "=" * 60)
|
| 201 |
+
print(f"Done! Output file: {OUTPUT_CSV}")
|
| 202 |
+
print("=" * 60)
|
| 203 |
+
|
| 204 |
+
|
| 205 |
+
if __name__ == "__main__":
|
| 206 |
+
main()
|
| 207 |
+
|
fossil_responses_with_images.csv
ADDED
|
@@ -0,0 +1,868 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 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,
|
labels.py
CHANGED
|
@@ -178,15 +178,15 @@ for i in range(171):
|
|
| 178 |
lookup_140 = {0: 'Anacardiaceae',
|
| 179 |
1: 'Berberidaceae',
|
| 180 |
2: 'Betulaceae',
|
| 181 |
-
3: '
|
| 182 |
-
4: '
|
| 183 |
5: 'Fabaceae',
|
| 184 |
6: 'Fagaceae',
|
| 185 |
7: 'Juglandaceae',
|
| 186 |
8: 'Lauraceae',
|
| 187 |
9: 'Meliaceae',
|
| 188 |
10: 'Myrtaceae',
|
| 189 |
-
11: '
|
| 190 |
12: 'Rhamnaceae',
|
| 191 |
13: 'Rosaceae',
|
| 192 |
14: 'Salicaceae',
|
|
@@ -194,16 +194,16 @@ lookup_140 = {0: 'Anacardiaceae',
|
|
| 194 |
16: 'Ulmaceae',
|
| 195 |
17: 'Viburnaceae',
|
| 196 |
18: 'Vitaceae',
|
| 197 |
-
19: '
|
| 198 |
20: 'Grossulariaceae',
|
| 199 |
21: 'Hydrangeaceae',
|
| 200 |
-
22: '
|
| 201 |
23: 'Achariaceae',
|
| 202 |
24: 'Actinidiaceae',
|
| 203 |
25: 'Altingiaceae',
|
| 204 |
26: 'Amaranthaceae',
|
| 205 |
27: 'Annonaceae',
|
| 206 |
-
28: '
|
| 207 |
29: 'Apocynaceae',
|
| 208 |
30: 'Aquifoliaceae',
|
| 209 |
31: 'Araliaceae',
|
|
@@ -212,7 +212,7 @@ lookup_140 = {0: 'Anacardiaceae',
|
|
| 212 |
34: 'Bignoniaceae',
|
| 213 |
35: 'Boraginaceae',
|
| 214 |
36: 'Burseraceae',
|
| 215 |
-
37: '
|
| 216 |
38: 'Calophyllaceae',
|
| 217 |
39: 'Calycanthaceae',
|
| 218 |
40: 'Campanulaceae',
|
|
@@ -220,7 +220,7 @@ lookup_140 = {0: 'Anacardiaceae',
|
|
| 220 |
42: 'Cannabaceae',
|
| 221 |
43: 'Capparaceae',
|
| 222 |
44: 'Caprifoliaceae',
|
| 223 |
-
45: '
|
| 224 |
46: 'Celastraceae',
|
| 225 |
47: 'Chloranthaceae',
|
| 226 |
48: 'Chrysobalanaceae',
|
|
@@ -229,7 +229,7 @@ lookup_140 = {0: 'Anacardiaceae',
|
|
| 229 |
51: 'Connaraceae',
|
| 230 |
52: 'Coriariaceae',
|
| 231 |
53: 'Cornaceae',
|
| 232 |
-
54: '
|
| 233 |
55: 'Cucurbitaceae',
|
| 234 |
56: 'Cunoniaceae',
|
| 235 |
57: 'Dilleniaceae',
|
|
@@ -243,7 +243,7 @@ lookup_140 = {0: 'Anacardiaceae',
|
|
| 243 |
65: 'Garryaceae',
|
| 244 |
66: 'Geraniaceae',
|
| 245 |
67: 'Gesneriaceae',
|
| 246 |
-
68: '
|
| 247 |
69: 'Hamamelidaceae',
|
| 248 |
70: 'Humiriaceae',
|
| 249 |
71: 'Hypericaceae',
|
|
@@ -260,7 +260,7 @@ lookup_140 = {0: 'Anacardiaceae',
|
|
| 260 |
82: 'Magnoliaceae',
|
| 261 |
83: 'Malpighiaceae',
|
| 262 |
84: 'Malvaceae',
|
| 263 |
-
85: '
|
| 264 |
86: 'Melastomataceae',
|
| 265 |
87: 'Menispermaceae',
|
| 266 |
88: 'Monimiaceae',
|
|
@@ -302,7 +302,7 @@ lookup_140 = {0: 'Anacardiaceae',
|
|
| 302 |
124: 'Schisandraceae',
|
| 303 |
125: 'Scrophulariaceae',
|
| 304 |
126: 'Simaroubaceae',
|
| 305 |
-
127: '
|
| 306 |
128: 'Solanaceae',
|
| 307 |
129: 'Staphyleaceae',
|
| 308 |
130: 'Stemonuraceae',
|
|
|
|
| 178 |
lookup_140 = {0: 'Anacardiaceae',
|
| 179 |
1: 'Berberidaceae',
|
| 180 |
2: 'Betulaceae',
|
| 181 |
+
3: 'Crassulaceae',
|
| 182 |
+
4: 'Cardiopteridaceae',
|
| 183 |
5: 'Fabaceae',
|
| 184 |
6: 'Fagaceae',
|
| 185 |
7: 'Juglandaceae',
|
| 186 |
8: 'Lauraceae',
|
| 187 |
9: 'Meliaceae',
|
| 188 |
10: 'Myrtaceae',
|
| 189 |
+
11: 'Apiaceae',
|
| 190 |
12: 'Rhamnaceae',
|
| 191 |
13: 'Rosaceae',
|
| 192 |
14: 'Salicaceae',
|
|
|
|
| 194 |
16: 'Ulmaceae',
|
| 195 |
17: 'Viburnaceae',
|
| 196 |
18: 'Vitaceae',
|
| 197 |
+
19: 'Acanthaceae',
|
| 198 |
20: 'Grossulariaceae',
|
| 199 |
21: 'Hydrangeaceae',
|
| 200 |
+
22: 'Buxaceae',
|
| 201 |
23: 'Achariaceae',
|
| 202 |
24: 'Actinidiaceae',
|
| 203 |
25: 'Altingiaceae',
|
| 204 |
26: 'Amaranthaceae',
|
| 205 |
27: 'Annonaceae',
|
| 206 |
+
28: 'Cleomaceae',
|
| 207 |
29: 'Apocynaceae',
|
| 208 |
30: 'Aquifoliaceae',
|
| 209 |
31: 'Araliaceae',
|
|
|
|
| 212 |
34: 'Bignoniaceae',
|
| 213 |
35: 'Boraginaceae',
|
| 214 |
36: 'Burseraceae',
|
| 215 |
+
37: 'Clethraceae',
|
| 216 |
38: 'Calophyllaceae',
|
| 217 |
39: 'Calycanthaceae',
|
| 218 |
40: 'Campanulaceae',
|
|
|
|
| 220 |
42: 'Cannabaceae',
|
| 221 |
43: 'Capparaceae',
|
| 222 |
44: 'Caprifoliaceae',
|
| 223 |
+
45: 'Cercidiphyllaceae',
|
| 224 |
46: 'Celastraceae',
|
| 225 |
47: 'Chloranthaceae',
|
| 226 |
48: 'Chrysobalanaceae',
|
|
|
|
| 229 |
51: 'Connaraceae',
|
| 230 |
52: 'Coriariaceae',
|
| 231 |
53: 'Cornaceae',
|
| 232 |
+
54: 'Trochodendraceae',
|
| 233 |
55: 'Cucurbitaceae',
|
| 234 |
56: 'Cunoniaceae',
|
| 235 |
57: 'Dilleniaceae',
|
|
|
|
| 243 |
65: 'Garryaceae',
|
| 244 |
66: 'Geraniaceae',
|
| 245 |
67: 'Gesneriaceae',
|
| 246 |
+
68: 'Gunneraceae',
|
| 247 |
69: 'Hamamelidaceae',
|
| 248 |
70: 'Humiriaceae',
|
| 249 |
71: 'Hypericaceae',
|
|
|
|
| 260 |
82: 'Magnoliaceae',
|
| 261 |
83: 'Malpighiaceae',
|
| 262 |
84: 'Malvaceae',
|
| 263 |
+
85: 'Hernandiaceae',
|
| 264 |
86: 'Melastomataceae',
|
| 265 |
87: 'Menispermaceae',
|
| 266 |
88: 'Monimiaceae',
|
|
|
|
| 302 |
124: 'Schisandraceae',
|
| 303 |
125: 'Scrophulariaceae',
|
| 304 |
126: 'Simaroubaceae',
|
| 305 |
+
127: 'Atherospermataceae',
|
| 306 |
128: 'Solanaceae',
|
| 307 |
129: 'Staphyleaceae',
|
| 308 |
130: 'Stemonuraceae',
|
run.sh
ADDED
|
@@ -0,0 +1,20 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
#!/bin/bash
|
| 2 |
+
|
| 3 |
+
# Activate virtual environment
|
| 4 |
+
source venv/bin/activate
|
| 5 |
+
|
| 6 |
+
# Check if .env file exists
|
| 7 |
+
if [ ! -f .env ]; then
|
| 8 |
+
echo "⚠️ Warning: .env file not found!"
|
| 9 |
+
echo ""
|
| 10 |
+
echo "Please create a .env file with your HuggingFace READ_TOKEN:"
|
| 11 |
+
echo " READ_TOKEN=your_token_here"
|
| 12 |
+
echo ""
|
| 13 |
+
echo "Get your token from: https://huggingface.co/settings/tokens"
|
| 14 |
+
echo ""
|
| 15 |
+
read -p "Press Enter to continue anyway (models may fail to download) or Ctrl+C to exit..."
|
| 16 |
+
fi
|
| 17 |
+
|
| 18 |
+
# Run the app
|
| 19 |
+
python app.py
|
| 20 |
+
|