Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Incorporate matrix tube sample accession into amplicon notebook v2 #200

Merged
merged 8 commits into from
May 1, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
2 changes: 2 additions & 0 deletions .coveragerc
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
[report]
ignore_errors = True
4 changes: 3 additions & 1 deletion .github/workflows/main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -137,7 +137,9 @@ jobs:
run: |
conda activate metapool
nosetests --with-coverage --cover-inclusive --cover-package metapool
coverage report
# -i switch introduced to ignore errors when reading source files.
# See: https://stackoverflow.com/questions/2386975/no-source-for-code-message-in-coverage-py
coverage report -i

- name: Python linter
shell: bash -l {0}
Expand Down
1,243 changes: 710 additions & 533 deletions metapool/metapool.py

Large diffs are not rendered by default.

10 changes: 6 additions & 4 deletions metapool/plate.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,11 +11,13 @@


EXPECTED_COLUMNS = {
'Plate Position', 'Primer Plate #', 'Plating', 'Extraction Kit Lot',
'Plate Position', 'Plate map file', 'Plate elution volume',
'Primer Plate #', 'Plating', 'Extraction Kit Lot',
'Extraction Robot', 'TM1000 8 Tool', 'Primer Date', 'MasterMix Lot',
'Water Lot', 'Processing Robot', 'Sample Plate', 'Project_Name',
'Original Name', 'TM300 8 Tool', 'TM50 8 Tool', 'TM10 8 Tool', 'run_date',
'instrument_model', 'center_project_name', 'experiment_design_description'}
'Water Lot', 'Processing Robot', 'Sample Plate', 'Project Name',
'Project Abbreviation', 'Original Name', 'TM300 8 Tool', 'TM50 8 Tool',
'TM10 8 Tool', 'run_date', 'instrument_model', 'center_project_name',
'experiment_design_description'}


class Message(object):
Expand Down
21 changes: 19 additions & 2 deletions metapool/prep.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
from datetime import datetime
from string import ascii_letters, digits
from metapool.plate import PlateReplication
from collections import Counter


REQUIRED_MF_COLUMNS = {'sample_name', 'barcode', 'primer', 'primer_plate',
Expand Down Expand Up @@ -728,6 +729,7 @@ def generate_qiita_prep_file(platedf, seqtype):
'Golay Barcode': 'barcode',
'515FB Forward Primer (Parada)': 'primer',
'Project Name': 'project_name',
'Project_Name': 'project_name',
'Well': 'well_id_384',
'Primer Plate #': 'primer_plate',
'Plating': 'plating',
Expand All @@ -743,13 +745,16 @@ def generate_qiita_prep_file(platedf, seqtype):
'Processing Robot': 'processing_robot',
'Sample Plate': 'sample_plate',
'Forward Primer Linker': 'linker',
'Date': 'platemap_generation_date',
'Project Abbreviation': 'project_abbreviation'
}
else:
column_renamer = {
'Sample': 'sample_name',
'Golay Barcode': 'barcode',
'Reverse complement of 3prime Illumina Adapter': 'primer',
'Project Name': 'project_name',
'Project_Name': 'project_name',
'Well': 'well_id_384',
'Primer Plate #': 'primer_plate',
'Plating': 'plating',
Expand All @@ -764,7 +769,9 @@ def generate_qiita_prep_file(platedf, seqtype):
'Water Lot': 'water_lot',
'Processing Robot': 'processing_robot',
'Sample Plate': 'sample_plate',
'Reverse Primer Linker': 'linker'
'Reverse Primer Linker': 'linker',
'Date': 'platemap_generation_date',
'Project Abbreviation': 'project_abbreviation'
}

prep = platedf.copy()
Expand Down Expand Up @@ -814,6 +821,14 @@ def generate_qiita_prep_file(platedf, seqtype):
if c not in prep.columns:
prep[c] = ''

if not prep.columns.is_unique:
column_names = Counter(list(prep.columns))
duplicates = [x for x in column_names if column_names[x] > 1]
raise ValueError(
"One or more columns in DataFrame resolve to the same"
" column name(s): %s" % ", ".join(duplicates)
)

# the approved order of columns in the prep-file.
column_order = ['sample_name', 'barcode', 'primer', 'primer_plate',
'well_id_384', 'plating', 'extractionkit_lot',
Expand All @@ -835,7 +850,9 @@ def generate_qiita_prep_file(platedf, seqtype):
remove_these = {'Blank', 'Col', 'Compressed Plate Name', 'Plate Position',
'EMP Primer Plate Well', 'Forward Primer Pad', 'Name',
'Illumina 5prime Adapter', 'Original Name', 'Plate', 'Row',
'Primer For PCR', 'Project Plate', 'index', 'Project_Name'}
'Primer For PCR', 'Project Plate', 'index',
'Plate elution volume', 'Plate map file', 'Time',
'RackID'}

# only remove the columns from the above set that are actually present in
# the prep dataframe to avoid possible errors.
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,97 @@
Date Time LocationCell LocationColumn LocationRow TubeCode RackID
20230627 09:26:10 A1 1 A 0363132553 plate_1
20230627 09:26:10 A2 2 A 0363132554 plate_1
20230627 09:26:10 A3 3 A 0363132555 plate_1
20230627 09:26:10 A4 4 A 0363132556 plate_1
20230627 09:26:10 A5 5 A 0363132557 plate_1
20230627 09:26:10 A6 6 A 0363132558 plate_1
20230627 09:26:10 A7 7 A 0363132559 plate_1
20230627 09:26:10 A8 8 A 0363132560 plate_1
20230627 09:26:10 A9 9 A 0363132561 plate_1
20230627 09:26:10 A10 10 A 0363132562 plate_1
20230627 09:26:10 A11 11 A 0363132563 plate_1
20230627 09:26:10 A12 12 A 0363132564 plate_1
20230627 09:26:10 B1 1 B 0363132565 plate_1
20230627 09:26:10 B2 2 B 0363132566 plate_1
20230627 09:26:10 B3 3 B 0363132567 plate_1
20230627 09:26:10 B4 4 B 0363132568 plate_1
20230627 09:26:10 B5 5 B 0363132569 plate_1
20230627 09:26:10 B6 6 B 0363132570 plate_1
20230627 09:26:10 B7 7 B 0363132571 plate_1
20230627 09:26:10 B8 8 B 0363132572 plate_1
20230627 09:26:10 B9 9 B 0363132573 plate_1
20230627 09:26:10 B10 10 B 0363132574 plate_1
20230627 09:26:10 B11 11 B 0363132575 plate_1
20230627 09:26:10 B12 12 B 0363132576 plate_1
20230627 09:26:10 C1 1 C 0363132697 plate_1
20230627 09:26:10 C2 2 C 0363132698 plate_1
20230627 09:26:10 C3 3 C 0363132699 plate_1
20230627 09:26:10 C4 4 C 0363132700 plate_1
20230627 09:26:10 C5 5 C 0363132701 plate_1
20230627 09:26:10 C6 6 C 0363132702 plate_1
20230627 09:26:10 C7 7 C 0363132703 plate_1
20230627 09:26:10 C8 8 C 0363132704 plate_1
20230627 09:26:10 C9 9 C 0363132705 plate_1
20230627 09:26:10 C10 10 C 0363132706 plate_1
20230627 09:26:10 C11 11 C 0363132707 plate_1
20230627 09:26:10 C12 12 C 0363132708 plate_1
20230627 09:26:10 D1 1 D 0363132709 plate_1
20230627 09:26:10 D2 2 D 0363132710 plate_1
20230627 09:26:10 D3 3 D 0363132711 plate_1
20230627 09:26:10 D4 4 D 0363132712 plate_1
20230627 09:26:10 D5 5 D 0363132713 plate_1
20230627 09:26:10 D6 6 D 0363132714 plate_1
20230627 09:26:10 D7 7 D 0363132715 plate_1
20230627 09:26:10 D8 8 D 0363132716 plate_1
20230627 09:26:10 D9 9 D 0363132717 plate_1
20230627 09:26:10 D10 10 D 0363132718 plate_1
20230627 09:26:10 D11 11 D 0363132719 plate_1
20230627 09:26:10 D12 12 D 0363132720 plate_1
20230627 09:26:10 E1 1 E 0363132769 plate_1
20230627 09:26:10 E2 2 E 0363132770 plate_1
20230627 09:26:10 E3 3 E 0363132771 plate_1
20230627 09:26:10 E4 4 E 0363132772 plate_1
20230627 09:26:10 E5 5 E 0363132773 plate_1
20230627 09:26:10 E6 6 E 0363132774 plate_1
20230627 09:26:10 E7 7 E 0363132775 plate_1
20230627 09:26:10 E8 8 E 0363132776 plate_1
20230627 09:26:10 E9 9 E 0363132777 plate_1
20230627 09:26:10 E10 10 E 0363132778 plate_1
20230627 09:26:10 E11 11 E 0363132779 plate_1
20230627 09:26:10 E12 12 E 0363132780 plate_1
20230627 09:26:10 F1 1 F 0363132781 plate_1
20230627 09:26:10 F2 2 F 0363132782 plate_1
20230627 09:26:10 F3 3 F 0363132783 plate_1
20230627 09:26:10 F4 4 F 0363132784 plate_1
20230627 09:26:10 F5 5 F 0363132785 plate_1
20230627 09:26:10 F6 6 F 0363132786 plate_1
20230627 09:26:10 F7 7 F 0363132787 plate_1
20230627 09:26:10 F8 8 F 0363132788 plate_1
20230627 09:26:10 F9 9 F 0363132789 plate_1
20230627 09:26:10 F10 10 F 0363132790 plate_1
20230627 09:26:10 F11 11 F 0363132791 plate_1
20230627 09:26:10 F12 12 F 0363132792 plate_1
20230627 09:26:10 G1 1 G 0363132889 plate_1
20230627 09:26:10 G2 2 G 0363132890 plate_1
20230627 09:26:10 G3 3 G 0363132891 plate_1
20230627 09:26:10 G4 4 G 0363132892 plate_1
20230627 09:26:10 G5 5 G 0363132893 plate_1
20230627 09:26:10 G6 6 G 0363132894 plate_1
20230627 09:26:10 G7 7 G 0363132895 plate_1
20230627 09:26:10 G8 8 G 0363132896 plate_1
20230627 09:26:10 G9 9 G 0363132897 plate_1
20230627 09:26:10 G10 10 G 0363132898 plate_1
20230627 09:26:10 G11 11 G 0363132899 plate_1
20230627 09:26:10 G12 12 G 0363132900 plate_1
20230627 09:26:10 H1 1 H 0363132901 plate_1
20230627 09:26:10 H2 2 H 0363132902 plate_1
20230627 09:26:10 H3 3 H 0363132903 plate_1
20230627 09:26:10 H4 4 H 0363132904 plate_1
20230627 09:26:10 H5 5 H 0363132905 plate_1
20230627 09:26:10 H6 6 H 0363132906 plate_1
20230627 09:26:10 H7 7 H 0363132907 plate_1
20230627 09:26:10 H8 8 H 0363132908 plate_1
20230627 09:26:10 H9 9 H 0363132909 plate_1
20230627 09:26:10 H10 10 H 0363132910 plate_1
20230627 09:26:10 H11 11 H 0363132911 plate_1
20230627 09:26:10 H12 12 H 0363132912 plate_1
Original file line number Diff line number Diff line change
@@ -0,0 +1,97 @@
Date Time LocationCell LocationColumn LocationRow TubeCode RackID
20230627 09:27:41 A1 1 A 0363133033 plate_2
20230627 09:27:41 A2 2 A 0363133034 plate_2
20230627 09:27:41 A3 3 A 0363133035 plate_2
20230627 09:27:41 A4 4 A 0363133036 plate_2
20230627 09:27:41 A5 5 A 0363133037 plate_2
20230627 09:27:41 A6 6 A 0363133038 plate_2
20230627 09:27:41 A7 7 A 0363133039 plate_2
20230627 09:27:41 A8 8 A 0363133040 plate_2
20230627 09:27:41 A9 9 A 0363133041 plate_2
20230627 09:27:41 A10 10 A 0363133042 plate_2
20230627 09:27:41 A11 11 A 0363133043 plate_2
20230627 09:27:41 A12 12 A 0363133044 plate_2
20230627 09:27:41 B1 1 B 0363133045 plate_2
20230627 09:27:41 B2 2 B 0363133046 plate_2
20230627 09:27:41 B3 3 B 0363133047 plate_2
20230627 09:27:41 B4 4 B 0363133048 plate_2
20230627 09:27:41 B5 5 B 0363133049 plate_2
20230627 09:27:41 B6 6 B 0363133050 plate_2
20230627 09:27:41 B7 7 B 0363133051 plate_2
20230627 09:27:41 B8 8 B 0363133052 plate_2
20230627 09:27:41 B9 9 B 0363133053 plate_2
20230627 09:27:41 B10 10 B 0363133054 plate_2
20230627 09:27:41 B11 11 B 0363133055 plate_2
20230627 09:27:41 B12 12 B 0363133056 plate_2
20230627 09:27:41 C1 1 C 0363133105 plate_2
20230627 09:27:41 C2 2 C 0363133106 plate_2
20230627 09:27:41 C3 3 C 0363133107 plate_2
20230627 09:27:41 C4 4 C 0363133108 plate_2
20230627 09:27:41 C5 5 C 0363133109 plate_2
20230627 09:27:41 C6 6 C 0363133110 plate_2
20230627 09:27:41 C7 7 C 0363133111 plate_2
20230627 09:27:41 C8 8 C 0363133112 plate_2
20230627 09:27:41 C9 9 C 0363133113 plate_2
20230627 09:27:41 C10 10 C 0363133114 plate_2
20230627 09:27:41 C11 11 C 0363133115 plate_2
20230627 09:27:41 C12 12 C 0363133116 plate_2
20230627 09:27:41 D1 1 D 0363133117 plate_2
20230627 09:27:41 D2 2 D 0363133118 plate_2
20230627 09:27:41 D3 3 D 0363133119 plate_2
20230627 09:27:41 D4 4 D 0363133120 plate_2
20230627 09:27:41 D5 5 D 0363133121 plate_2
20230627 09:27:41 D6 6 D 0363133122 plate_2
20230627 09:27:41 D7 7 D 0363133123 plate_2
20230627 09:27:41 D8 8 D 0363133124 plate_2
20230627 09:27:41 D9 9 D 0363133125 plate_2
20230627 09:27:41 D10 10 D 0363133126 plate_2
20230627 09:27:41 D11 11 D 0363133127 plate_2
20230627 09:27:41 D12 12 D 0363133128 plate_2
20230627 09:27:41 E1 1 E 0363133177 plate_2
20230627 09:27:41 E2 2 E 0363133178 plate_2
20230627 09:27:41 E3 3 E 0363133179 plate_2
20230627 09:27:41 E4 4 E 0363133180 plate_2
20230627 09:27:41 E5 5 E 0363133181 plate_2
20230627 09:27:41 E6 6 E 0363133182 plate_2
20230627 09:27:41 E7 7 E 0363133183 plate_2
20230627 09:27:41 E8 8 E 0363133184 plate_2
20230627 09:27:41 E9 9 E 0363133185 plate_2
20230627 09:27:41 E10 10 E 0363133186 plate_2
20230627 09:27:41 E11 11 E 0363133187 plate_2
20230627 09:27:41 E12 12 E 0363133188 plate_2
20230627 09:27:41 F1 1 F 0363133189 plate_2
20230627 09:27:41 F2 2 F 0363133190 plate_2
20230627 09:27:41 F3 3 F 0363133191 plate_2
20230627 09:27:41 F4 4 F 0363133192 plate_2
20230627 09:27:41 F5 5 F 0363133193 plate_2
20230627 09:27:41 F6 6 F 0363133194 plate_2
20230627 09:27:41 F7 7 F 0363133195 plate_2
20230627 09:27:41 F8 8 F 0363133196 plate_2
20230627 09:27:41 F9 9 F 0363133197 plate_2
20230627 09:27:41 F10 10 F 0363133198 plate_2
20230627 09:27:41 F11 11 F 0363133199 plate_2
20230627 09:27:41 F12 12 F 0363133200 plate_2
20230627 09:27:41 G1 1 G 0363133249 plate_2
20230627 09:27:41 G2 2 G 0363133250 plate_2
20230627 09:27:41 G3 3 G 0363133251 plate_2
20230627 09:27:41 G4 4 G 0363133252 plate_2
20230627 09:27:41 G5 5 G 0363133253 plate_2
20230627 09:27:41 G6 6 G 0363133254 plate_2
20230627 09:27:41 G7 7 G 0363133255 plate_2
20230627 09:27:41 G8 8 G 0363133256 plate_2
20230627 09:27:41 G9 9 G 0363133257 plate_2
20230627 09:27:41 G10 10 G 0363133258 plate_2
20230627 09:27:41 G11 11 G 0363133259 plate_2
20230627 09:27:41 G12 12 G 0363133260 plate_2
20230627 09:27:41 H1 1 H 0363133261 plate_2
20230627 09:27:41 H2 2 H 0363133262 plate_2
20230627 09:27:41 H3 3 H 0363133263 plate_2
20230627 09:27:41 H4 4 H 0363133264 plate_2
20230627 09:27:41 H5 5 H 0363133265 plate_2
20230627 09:27:41 H6 6 H 0363133266 plate_2
20230627 09:27:41 H7 7 H 0363133267 plate_2
20230627 09:27:41 H8 8 H 0363133268 plate_2
20230627 09:27:41 H9 9 H 0363133269 plate_2
20230627 09:27:41 H10 10 H 0363133270 plate_2
20230627 09:27:41 H11 11 H 0363133271 plate_2
20230627 09:27:41 H12 12 H 0363133272 plate_2
Original file line number Diff line number Diff line change
@@ -0,0 +1,97 @@
Date Time LocationCell LocationColumn LocationRow TubeCode RackID
20230627 09:29:31 A1 1 A 0363133321 plate_3
20230627 09:29:31 A2 2 A 0363133322 plate_3
20230627 09:29:31 A3 3 A 0363133323 plate_3
20230627 09:29:31 A4 4 A 0363133324 plate_3
20230627 09:29:31 A5 5 A 0363133325 plate_3
20230627 09:29:31 A6 6 A 0363133326 plate_3
20230627 09:29:31 A7 7 A 0363133327 plate_3
20230627 09:29:31 A8 8 A 0363133328 plate_3
20230627 09:29:31 A9 9 A 0363133329 plate_3
20230627 09:29:31 A10 10 A 0363133330 plate_3
20230627 09:29:31 A11 11 A 0363133331 plate_3
20230627 09:29:31 A12 12 A 0363133332 plate_3
20230627 09:29:31 B1 1 B 0363133333 plate_3
20230627 09:29:31 B2 2 B 0363133334 plate_3
20230627 09:29:31 B3 3 B 0363133335 plate_3
20230627 09:29:31 B4 4 B 0363133336 plate_3
20230627 09:29:31 B5 5 B 0363133337 plate_3
20230627 09:29:31 B6 6 B 0363133338 plate_3
20230627 09:29:31 B7 7 B 0363133339 plate_3
20230627 09:29:31 B8 8 B 0363133340 plate_3
20230627 09:29:31 B9 9 B 0363133341 plate_3
20230627 09:29:31 B10 10 B 0363133342 plate_3
20230627 09:29:31 B11 11 B 0363133343 plate_3
20230627 09:29:31 B12 12 B 0363133344 plate_3
20230627 09:29:31 C1 1 C 0363133393 plate_3
20230627 09:29:31 C2 2 C 0363133394 plate_3
20230627 09:29:31 C3 3 C 0363133395 plate_3
20230627 09:29:31 C4 4 C 0363133396 plate_3
20230627 09:29:31 C5 5 C 0363133397 plate_3
20230627 09:29:31 C6 6 C 0363133398 plate_3
20230627 09:29:31 C7 7 C 0363133399 plate_3
20230627 09:29:31 C8 8 C 0363133400 plate_3
20230627 09:29:31 C9 9 C 0363133401 plate_3
20230627 09:29:31 C10 10 C 0363133402 plate_3
20230627 09:29:31 C11 11 C 0363133403 plate_3
20230627 09:29:31 C12 12 C 0363133404 plate_3
20230627 09:29:31 D1 1 D 0363133405 plate_3
20230627 09:29:31 D2 2 D 0363133406 plate_3
20230627 09:29:31 D3 3 D 0363133407 plate_3
20230627 09:29:31 D4 4 D 0363133408 plate_3
20230627 09:29:31 D5 5 D 0363133409 plate_3
20230627 09:29:31 D6 6 D 0363133410 plate_3
20230627 09:29:31 D7 7 D 0363133411 plate_3
20230627 09:29:31 D8 8 D 0363133412 plate_3
20230627 09:29:31 D9 9 D 0363133413 plate_3
20230627 09:29:31 D10 10 D 0363133414 plate_3
20230627 09:29:31 D11 11 D 0363133415 plate_3
20230627 09:29:31 D12 12 D 0363133416 plate_3
20230627 09:29:31 E1 1 E 0363133465 plate_3
20230627 09:29:31 E2 2 E 0363133466 plate_3
20230627 09:29:31 E3 3 E 0363133467 plate_3
20230627 09:29:31 E4 4 E 0363133468 plate_3
20230627 09:29:31 E5 5 E 0363133469 plate_3
20230627 09:29:31 E6 6 E 0363133470 plate_3
20230627 09:29:31 E7 7 E 0363133471 plate_3
20230627 09:29:31 E8 8 E 0363133472 plate_3
20230627 09:29:31 E9 9 E 0363133473 plate_3
20230627 09:29:31 E10 10 E 0363133474 plate_3
20230627 09:29:31 E11 11 E 0363133475 plate_3
20230627 09:29:31 E12 12 E 0363133476 plate_3
20230627 09:29:31 F1 1 F 0363133477 plate_3
20230627 09:29:31 F2 2 F 0363133478 plate_3
20230627 09:29:31 F3 3 F 0363133479 plate_3
20230627 09:29:31 F4 4 F 0363133480 plate_3
20230627 09:29:31 F5 5 F 0363133481 plate_3
20230627 09:29:31 F6 6 F 0363133482 plate_3
20230627 09:29:31 F7 7 F 0363133483 plate_3
20230627 09:29:31 F8 8 F 0363133484 plate_3
20230627 09:29:31 F9 9 F 0363133485 plate_3
20230627 09:29:31 F10 10 F 0363133486 plate_3
20230627 09:29:31 F11 11 F 0363133487 plate_3
20230627 09:29:31 F12 12 F 0363133488 plate_3
20230627 09:29:31 G1 1 G 0363133537 plate_3
20230627 09:29:31 G2 2 G 0363133538 plate_3
20230627 09:29:31 G3 3 G 0363133539 plate_3
20230627 09:29:31 G4 4 G 0363133540 plate_3
20230627 09:29:31 G5 5 G 0363133541 plate_3
20230627 09:29:31 G6 6 G 0363133542 plate_3
20230627 09:29:31 G7 7 G 0363133543 plate_3
20230627 09:29:31 G8 8 G 0363133544 plate_3
20230627 09:29:31 G9 9 G 0363133545 plate_3
20230627 09:29:31 G10 10 G 0363133546 plate_3
20230627 09:29:31 G11 11 G 0363133547 plate_3
20230627 09:29:31 G12 12 G 0363133548 plate_3
20230627 09:29:31 H1 1 H 0363133549 plate_3
20230627 09:29:31 H2 2 H 0363133550 plate_3
20230627 09:29:31 H3 3 H 0363133551 plate_3
20230627 09:29:31 H4 4 H 0363133552 plate_3
20230627 09:29:31 H5 5 H 0363133553 plate_3
20230627 09:29:31 H6 6 H 0363133554 plate_3
20230627 09:29:31 H7 7 H 0363133555 plate_3
20230627 09:29:31 H8 8 H 0363133556 plate_3
20230627 09:29:31 H9 9 H 0363133557 plate_3
20230627 09:29:31 H10 10 H 0363133558 plate_3
20230627 09:29:31 H11 11 H 0363133559 plate_3
20230627 09:29:31 H12 12 H 0363133560 plate_3