Purpose: Systematically manage and retrieve sample locations in -80°C freezers using hierarchical storage organization.
Classification: Tool/Script型 (本地脚本执行)
Sample location information is stored in JSON files:
json
{
"samples": [
{
"id": "uuid",
"name": "Sample Name",
"project": "Project Name",
"freezer": "F01",
"level": 1,
"rack": "A",
"box": "01",
"position": "A1",
"quantity": 1,
"date_stored": "2024-01-15",
"notes": "Notes",
"created_at": "2024-01-15T10:30:00Z",
"updated_at": "2024-01-15T10:30:00Z"
}
]
}
ParameterTypeDefaultRequiredDescriptioncommandstring-YesCommand to execute (add, search, list, update, delete, export, stats)--configstring-NoPath to configuration file
ParameterTypeDefaultRequiredDescription--namestring-YesSample name--projectstring-YesProject identifier--freezerstring-YesFreezer ID (e.g., F01)--levelint-YesShelf level number--rackstring-YesRack identifier--boxstring-YesBox number--positionstring-YesPosition within box (e.g., A1)--quantityint1NoSample quantity--notesstring-NoAdditional notes
ParameterTypeDefaultRequiredDescription--namestring-NoSearch by sample name (fuzzy)--projectstring-NoSearch by project (exact)--freezerstring-NoSearch by freezer ID--idstring-NoSearch by sample UUID
ParameterTypeDefaultRequiredDescription--freezerstring-NoFilter by freezer ID
ParameterTypeDefaultRequiredDescription--idstring-YesSample UUID to update--positionstring-NoNew position--quantityint-NoNew quantity--notesstring-NoNew notes
ParameterTypeDefaultRequiredDescription--idstring-YesSample UUID to delete
ParameterTypeDefaultRequiredDescription--output, -ostring-YesOutput file path--freezerstring-NoFilter by freezer ID
No additional parameters required.
bash
# Add new sample
python scripts/main.py add \
--name "Sample-001" \
--project "Project-A" \
--freezer "F01" \
--level 1 \
--rack "A" \
--box "01" \
--position "A1" \
--quantity 2 \
--notes "Primary culture"
# Search operations
python scripts/main.py search --name "Sample-001" # Name search (fuzzy)
python scripts/main.py search --project "Project-A" # Project search (exact)
python scripts/main.py search --freezer "F01" # Freezer search
python scripts/main.py search --id "uuid-string" # ID search (exact)
# List with optional filtering
python scripts/main.py list # All samples
python scripts/main.py list --freezer "F01" # Specific freezer
# Update sample information
python scripts/main.py update --id "uuid" --position "B2" --quantity 1
# Delete sample record
python scripts/main.py delete --id "uuid"
# Export functionality
python scripts/main.py export --output samples.csv --freezer "F01"
# Statistics
python scripts/main.py stats
python
from scripts.main import FreezerSampleLocator
# Initialize locator
locator = FreezerSampleLocator()
# Add sample with validation
sample = locator.add_sample(
name="Sample-001",
project="Project-A",
freezer="F01",
level=1,
rack="A",
box="01",
position="A1",
quantity=2,
notes="Primary culture"
)
# Search with multiple criteria
results = locator.search_samples(
name="Sample-001",
project="Project-A"
)
# Get formatted location
location = locator.get_sample_location(sample_id)
print(location["location_str"]) # "F01 > L1 > RA > B01 > A1"
# Export data
locator.export_csv("inventory.csv", freezer="F01")
python
# Core functionality tests
def test_add_sample():
"""Test sample addition with validation"""
def test_search_operations():
"""Test search by name, project, freezer"""
def test_conflict_prevention():
"""Test duplicate position detection"""
def test_export_functionality():
"""Test CSV/JSON export formats"""
def test_data_integrity():
"""Test concurrent access safety"""
bash
# Verify database integrity
python scripts/main.py stats
# Test search performance
python scripts/main.py search --name "test"
# Export validation
python scripts/main.py export --output test.csv
ComponentFormatRangeDescriptionFreezer IDF01, F02, F03...F01-F99Physical freezer unitLevel1-101-10Vertical level (top to bottom)RackA-ZA-ZHorizontal rack positionBox01-9901-99Box number within rackPositionA1-H12A1-H12Grid position (96-well standard)
text
{Freezer} > L{Level} > R{Rack} > B{Box} > {Position}
Example: F01 > L1 > RA > B01 > A1
data/ subdirectory within skill folderVersionDateChangesAuthorv1.02026-02-06Initial release with core functionality研发部
text
freezer-sample-locator/
├── SKILL.md # This file
├── scripts/
│ └── main.py # Core implementation
└── data/
└── samples.json # Sample database (auto-created)
bash
# No additional installation required - uses Python standard library
# Data directory created automatically on first run
Skill Classification: Tool/Script型 (MEDIUM Risk)
Compliance Status: ✅ Approved for production use
Next Review: 2026-05-06
Risk IndicatorAssessmentLevelCode ExecutionPython/R scripts executed locallyMediumNetwork AccessNo external API callsLowFile System AccessRead input files, write output filesMediumInstruction TamperingStandard prompt guidelinesLowData ExposureOutput files saved to workspaceLow
No additional Python packages required.
Current Stage: Draft
Next Review Date: 2026-03-06
Known Issues: None
Planned Improvements: