Commit 5670fc9e authored by Camron Blackburn's avatar Camron Blackburn
Browse files

add material data

parent bbb357dd
Pipeline #5392 passed with stage
in 9 seconds
......@@ -4,7 +4,7 @@ import os
DB_PATH = "materials"
REWRITE = True
def gen_index(filepath, pathlist):
def gen_index(indexpath, pathlist):
'''
makes a index page for the entire database
just a list of links to the material files
......@@ -14,8 +14,8 @@ def gen_index(filepath, pathlist):
assume name from path format
'''
dir = os.path.split(filepath)[0]
html_file = open(filepath, mode='w')
index_wd = os.path.split(indexpath)[0]
html_file = open(indexpath, mode='w')
content = '''
<!DOCTYPE html>
......@@ -42,14 +42,14 @@ def gen_index(filepath, pathlist):
<i>click the mask name for <b>more images & details</b></i>
'''
table = sum_table(pathlist, dir)
table = sum_table(pathlist, index_wd)
content += table
content = content + "\n </body>\n</html>"
html_file.write(content)
html_file.close()
print("generated index file: ", filepath)
print("generated index file: ", indexpath)
return
def gen_media_page(dirpath):
......@@ -125,18 +125,20 @@ def sum_table(pathlist, dir):
<thead>
<tr>
<th>name</th>
<th>filter efficiency (%)</th>
<th>pressure drop (psi)</th>
<th>image</th>
<th>avg fiber diameter (um)</th>
<th>thickness (mm)</th>
<th>weight (g/cm^2)</th>
<th>image</th>
<th>filter efficiency (%)</th>
<th>pressure drop (psi)</th>
</tr>
</thead>
<tbody>
'''
pathlist.sort()
for path in pathlist:
name = os.path.splitext(os.path.split(path)[1])[0]
mat_root = os.path.split(path)[0]
link_path = path[len(dir):]
link = '<td><a href=".%s">%s</a></td>\n' % (link_path, name)
......@@ -147,9 +149,9 @@ def sum_table(pathlist, dir):
weight = '<td></td>'
img = '<td></td>'
txt_path = os.path.join(dir, name, name+".txt")
txt_path = os.path.join(mat_root, name+".txt")
if not os.path.isfile(txt_path):
row = "<tr>\n" + link + effic + pressure + fiber + thick + weight + img + "</tr>\n"
row = "<tr>\n" + link + img + fiber + thick + weight + effic + pressure + "</tr>\n"
content += row
continue
......@@ -170,14 +172,14 @@ def sum_table(pathlist, dir):
else:
continue
SEM_path = os.path.join(dir, name, "SEM")
SEM_path = os.path.join(mat_root, "SEM")
if os.path.exists(SEM_path):
SEM_imgs = os.listdir(SEM_path)
rep_im = [img for img in SEM_imgs if "rep" in img][0]
im_path = os.path.join(SEM_path, rep_im)[len(dir):]
img = '<td><img src=".%s" height="200"></td>\n' % im_path
row = "<tr>\n" + link + effic + pressure + fiber + thick + weight + img + "</tr>\n"
row = "<tr>\n" + link + img + fiber + thick + weight + effic + pressure + "</tr>\n"
content += row
content += "</tbody>"
......@@ -186,6 +188,7 @@ def sum_table(pathlist, dir):
cwd = os.getcwd()
DB_PATH = os.path.join(cwd, DB_PATH)
INDEX_PATH = cwd
if not os.path.exists(DB_PATH):
os.mkdir(DB_PATH)
......@@ -200,6 +203,6 @@ for root, dirs, files in os.walk(DB_PATH):
html_media_pages.append(os.path.join(root, name, name+".html"))
# make index file if it doesn't exist
index = os.path.join(DB_PATH, "index.html")
index = os.path.join(INDEX_PATH, "index.html")
if not os.path.isfile(index) or REWRITE:
gen_index(index, html_media_pages)
\ No newline at end of file
gen_index(index, html_media_pages)
......@@ -26,74 +26,151 @@
<thead>
<tr>
<th>name</th>
<th>filter efficiency (%)</th>
<th>pressure drop (psi)</th>
<th>image</th>
<th>avg fiber diameter (um)</th>
<th>thickness (mm)</th>
<th>weight (g/cm^2)</th>
<th>image</th>
<th>filter efficiency (%)</th>
<th>pressure drop (psi)</th>
</tr>
</thead>
<tbody>
<tr>
<td><a href=".\3M_1000MPR\3M_1000MPR.html">3M_1000MPR</a></td>
<td></td><td></td><td></td><td></td><td></td><td></td></tr>
<tr>
<td><a href=".\3M_1900MPR\3M_1900MPR.html">3M_1900MPR</a></td>
<td></td><td></td><td></td><td></td><td></td><td></td></tr>
<tr>
<td><a href=".\3M_300MPR\3M_300MPR.html">3M_300MPR</a></td>
<td></td><td></td><td></td><td></td><td></td><td></td></tr>
<td><a href="./materials/3M_1000MPR/3M_1000MPR.html">3M_1000MPR</a></td>
<td><img src="./materials/3M_1000MPR/SEM/3M_filtrete1000_20nmAu_top_0014_raw_rep.jpg" height="200"></td>
<td></td><td> 0.280
</td>
<td>
</td>
<td></td><td></td></tr>
<tr>
<td><a href=".\3M_N95\3M_N95.html">3M_N95</a></td>
<td></td><td></td><td></td><td></td><td></td><td></td></tr>
<td><a href="./materials/3M_1900MPR/3M_1900MPR.html">3M_1900MPR</a></td>
<td><img src="./materials/3M_1900MPR/SEM/3M_filtrete1900_20nmAu_top_0008_rep.jpg" height="200"></td>
<td></td><td> 0.319
</td>
<td>
</td>
<td></td><td></td></tr>
<tr>
<td><a href=".\Arauco\Arauco.html">Arauco</a></td>
<td></td><td></td><td></td><td></td><td></td><td></td></tr>
<td><a href="./materials/3M_300MPR/3M_300MPR.html">3M_300MPR</a></td>
<td><img src="./materials/3M_300MPR/SEM/3M_filtrete300_20nmAu_top_0004_rep.jpg" height="200"></td>
<td></td><td> 0.292
</td>
<td>
</td>
<td></td><td></td></tr>
<tr>
<td><a href=".\Arauco_BKP\Arauco_BKP.html">Arauco_BKP</a></td>
<td></td><td></td><td></td><td></td><td></td><td></td></tr>
<td><a href="./materials/3M_N95/3M_N95.html">3M_N95</a></td>
<td><img src="./materials/3M_N95/SEM/3MN95_nosputter_top_0003_rep.jpg" height="200"></td>
<td></td><td> 0.721
</td>
<td> 0.0223
</td>
<td></td><td></td></tr>
<tr>
<td><a href=".\Arauco_EKP\Arauco_EKP.html">Arauco_EKP</a></td>
<td></td><td></td><td></td><td></td><td></td><td></td></tr>
<td><a href="./materials/Arauco_BKP/Arauco_BKP.html">Arauco_BKP</a></td>
<td><img src="./materials/Arauco_BKP/SEM/AraucoBKP_6_20nmAu_top_0003_raw_rep.jpg" height="200"></td>
<td></td><td> 1.8
</td>
<td> 0.0639
</td>
<td></td><td></td></tr>
<tr>
<td><a href=".\Arauco_UKP\Arauco_UKP.html">Arauco_UKP</a></td>
<td></td><td></td><td></td><td></td><td></td><td></td></tr>
<td><a href="./materials/Arauco_EKP/Arauco_EKP.html">Arauco_EKP</a></td>
<td><img src="./materials/Arauco_EKP/SEM/AraucoEKP_8_20nmAu_top_0004_rep.jpg" height="200"></td>
<td></td><td> 1.3
</td>
<td> 0.0772
</td>
<td></td><td></td></tr>
<tr>
<td><a href=".\cotton\cotton.html">cotton</a></td>
<td></td><td></td><td></td><td></td><td></td><td></td></tr>
<td><a href="./materials/Arauco_UKP/Arauco_UKP.html">Arauco_UKP</a></td>
<td><img src="./materials/Arauco_UKP/SEM/AraucoUKP_6_20nmAu_top_0005_rep.jpg" height="200"></td>
<td></td><td> 1.6
</td>
<td> 0.0821
</td>
<td></td><td></td></tr>
<tr>
<td><a href=".\Gerson_N95\Gerson_N95.html">Gerson_N95</a></td>
<td></td><td></td><td></td><td> 1.076
<td><a href="./materials/Gerson_N95/Gerson_N95.html">Gerson_N95</a></td>
<td><img src="./materials/Gerson_N95/SEM/GersonN95_nosputter_top_0004_rep.jpg" height="200"></td>
<td></td><td> 1.076
</td>
<td> 0.0306
</td>
<td><img src=".\Gerson_N95\SEM\GersonN95_nosputter_top_0004_rep.jpg" height="200"></td>
</tr>
<td></td><td></td></tr>
<tr>
<td><a href=".\HEPA\HEPA.html">HEPA</a></td>
<td></td><td></td><td></td><td></td><td></td><td></td></tr>
<td><a href="./materials/HEPA/HEPA.html">HEPA</a></td>
<td><img src="./materials/HEPA/SEM/inline_HEPA_20nmAu_top_0008_rep.jpg" height="200"></td>
<td></td><td> 0.209
</td>
<td>
</td>
<td></td><td></td></tr>
<tr>
<td><a href="./materials/HV_PN13015AP2/HV_PN13015AP2.html">HV_PN13015AP2</a></td>
<td><img src="./materials/HV_PN13015AP2/SEM/PN13015AP2_20nmAu_top_0009_rep.jpg" height="200"></td>
<td></td><td> 0.081
</td>
<td> 0.0020
</td>
<td></td><td></td></tr>
<tr>
<td><a href=".\HV_PN13015AP2\HV_PN13015AP2.html">HV_PN13015AP2</a></td>
<td></td><td></td><td></td><td></td><td></td><td></td></tr>
<td><a href="./materials/HV_TSP050PLUS/HV_TSP050PLUS.html">HV_TSP050PLUS</a></td>
<td><img src="./materials/HV_TSP050PLUS/SEM/TS050PLUS_20nmAu_top_0003_rep.jpg" height="200"></td>
<td></td><td> 0.295
</td>
<td> 0.0064
</td>
<td></td><td></td></tr>
<tr>
<td><a href=".\HV_TSP050PLUS\HV_TSP050PLUS.html">HV_TSP050PLUS</a></td>
<td></td><td></td><td></td><td></td><td></td><td></td></tr>
<td><a href="./materials/HV_TSP050YA002/HV_TSP050YA002.html">HV_TSP050YA002</a></td>
<td><img src="./materials/HV_TSP050YA002/SEM/TSP050YA002_20nmAu_top_0006_rep.jpg" height="200"></td>
<td></td><td> 0.446
</td>
<td> 0.0143
</td>
<td></td><td></td></tr>
<tr>
<td><a href=".\HV_TSP050YA002\HV_TSP050YA002.html">HV_TSP050YA002</a></td>
<td></td><td></td><td></td><td></td><td></td><td></td></tr>
<td><a href="./materials/HV_TSP100NS015/HV_TSP100NS015.html">HV_TSP100NS015</a></td>
<td><img src="./materials/HV_TSP100NS015/SEM/TSP100NS015_20nmAu_top_0009_rep.jpg" height="200"></td>
<td></td><td> 0.437
</td>
<td> 0.0152
</td>
<td></td><td></td></tr>
<tr>
<td><a href=".\HV_TSP100NS015\HV_TSP100NS015.html">HV_TSP100NS015</a></td>
<td></td><td></td><td></td><td></td><td></td><td></td></tr>
<td><a href="./materials/KC_47117/KC_47117.html">KC_47117</a></td>
<td><img src="./materials/KC_47117/SEM/KC47117_20sputter_middlelayer_0005_rep.jpg" height="200"></td>
<td></td><td> 0.184
</td>
<td> 0.0067
</td>
<td></td><td></td></tr>
<tr>
<td><a href=".\KC_47117\KC_47117.html">KC_47117</a></td>
<td></td><td></td><td></td><td></td><td></td><td></td></tr>
<td><a href="./materials/cotton/cotton.html">cotton</a></td>
<td><img src="./materials/cotton/SEM/tshirt_100cotton_20nmAu_top_0004_rep.jpg" height="200"></td>
<td></td><td> 0.333
</td>
<td>
</td>
<td></td><td></td></tr>
<tr>
<td><a href=".\polyester\polyester.html">polyester</a></td>
<td></td><td></td><td></td><td></td><td></td><td></td></tr>
<td><a href="./materials/polyester/polyester.html">polyester</a></td>
<td><img src="./materials/polyester/SEM/pillowcase_20nmAu_top_0005_rep.jpg" height="200"></td>
<td></td><td> 0.137
</td>
<td>
</td>
<td></td><td></td></tr>
<tr>
<td><a href=".\tyvek\tyvek.html">tyvek</a></td>
<td></td><td></td><td></td><td></td><td></td><td></td></tr>
<td><a href="./materials/tyvek/tyvek.html">tyvek</a></td>
<td><img src="./materials/tyvek/SEM/tyvek_20nmAu_top_0005_rep.jpg" height="200"></td>
<td></td><td> 0.143
</td>
<td> 0.0065
</td>
<td></td><td></td></tr>
</tbody>
</body>
</html>
\ No newline at end of file
<!DOCTYPE html>
<html>
<h1>3M_1000MPR</h1>
<ul style="list-style-type:none;">
<li><b>name</b>: 3M 1000MPR Filtrete
</li>
<li><b>manufacture link</b>: <a href=" https://www.filtrete.com/3M/en_US/filtrete/products/~/Filtrete-Allergen-Defense-Air-Filters/?N=4315+3292676044+3294529207&preselect=7568680+7570555+3293786499&rt=rud
"> 3M Filtrete Allergen defence</a></li>
<li><b>thickness (mm)</b>: 0.280
</li>
<li><b>weight (g/cm^2)</b>:
</li>
<li><b>notes</b><ul style="list-tyle-type:none;"><li> MERV 11 rating</li><li> $11.99 for 30x30cm material
</li></ul></li>
<br><img src="./IMG_3949.jpg" height="400"><br>IMG_3949<br>
<br><img src="./IMG_3948.jpg" height="400"><br>IMG_3948<br>
<br><img src="./SEM/3M_filtrete1000_20nmAu_top_0019_raw.jpg" height="400"><br>3M_filtrete1000_20nmAu_top_0019_raw<br>
<br><img src="./SEM/3M_filtrete1000_20nmAu_top_0018_raw.jpg" height="400"><br>3M_filtrete1000_20nmAu_top_0018_raw<br>
<br><img src="./SEM/3M_filtrete1000_20nmAu_top_0010.jpg" height="400"><br>3M_filtrete1000_20nmAu_top_0010<br>
<br><img src="./SEM/3M_filtrete1000_20nmAu_top_0013_raw.jpg" height="400"><br>3M_filtrete1000_20nmAu_top_0013_raw<br>
<br><img src="./SEM/3M_filtrete1000_20nmAu_top_0012.jpg" height="400"><br>3M_filtrete1000_20nmAu_top_0012<br>
<br><img src="./SEM/3M_filtrete1000_20nmAu_top_0014_raw_rep.jpg" height="400"><br>3M_filtrete1000_20nmAu_top_0014_raw_rep<br>
<br><img src="./SEM/3M_filtrete1000_20nmAu_top_0016_raw.jpg" height="400"><br>3M_filtrete1000_20nmAu_top_0016_raw<br>
</html>
\ No newline at end of file
name: 3M 1000MPR Filtrete
manufacture link: 3M Filtrete Allergen defence, https://www.filtrete.com/3M/en_US/filtrete/products/~/Filtrete-Allergen-Defense-Air-Filters/?N=4315+3292676044+3294529207&preselect=7568680+7570555+3293786499&rt=rud
thickness (mm): 0.280
weight (g/cm^2):
notes: MERV 11 rating, $11.99 for 30x30cm material
<!DOCTYPE html>
<html>
<h1>3M_1900MPR</h1>
<ul style="list-style-type:none;">
<li><b>name</b>: 3M 1900 MPR
</li>
<li><b>manufacture link</b>: <a href=" https://www.filtrete.com/3M/en_US/filtrete/products/~/Filtrete-Healthy-Living-Air-Filters/?N=4315+3292675507+3294529207&preselect=7568680+7570560+3293786499&rt=rud
"> Premium Allergen Filtrete</a></li>
<li><b>thickness (mm)</b>: 0.319
</li>
<li><b>weight (g/cm^2)</b>:
</li>
<li><b>notes</b><ul style="list-tyle-type:none;"><li> MERV 13 rating</li><li> $19.99 for 35x60cm of material</li><li> "outperforms figberglass" so potentially not mad eof fiberglass
</li></ul></li>
<br><img src="./IMG_3951.jpg" height="400"><br>IMG_3951<br>
<br><img src="./IMG_3950.jpg" height="400"><br>IMG_3950<br>
<br><img src="./SEM/3M_filtrete1900_20nmAu_top_0004_raw.jpg" height="400"><br>3M_filtrete1900_20nmAu_top_0004_raw<br>
<br><img src="./SEM/3M_filtrete1900_20nmAu_top_0009.jpg" height="400"><br>3M_filtrete1900_20nmAu_top_0009<br>
<br><img src="./SEM/3M_filtrete1900_20nmAu_top_0008_rep.jpg" height="400"><br>3M_filtrete1900_20nmAu_top_0008_rep<br>
<br><img src="./SEM/3M_filtrete1900_20nmAu_top_0003_raw.jpg" height="400"><br>3M_filtrete1900_20nmAu_top_0003_raw<br>
<br><img src="./SEM/3M_filtrete1900_20nmAu_top_0007.jpg" height="400"><br>3M_filtrete1900_20nmAu_top_0007<br>
<br><img src="./SEM/3M_filtrete1900_20nmAu_top_0001_raw.jpg" height="400"><br>3M_filtrete1900_20nmAu_top_0001_raw<br>
<br><img src="./SEM/3M_filtrete1900_20nmAu_top_0006.jpg" height="400"><br>3M_filtrete1900_20nmAu_top_0006<br>
<br><img src="./SEM/3M_filtrete1900_20nmAu_top_0010_raw.jpg" height="400"><br>3M_filtrete1900_20nmAu_top_0010_raw<br>
</html>
\ No newline at end of file
name: 3M 1900 MPR
manufacture link: Premium Allergen Filtrete, https://www.filtrete.com/3M/en_US/filtrete/products/~/Filtrete-Healthy-Living-Air-Filters/?N=4315+3292675507+3294529207&preselect=7568680+7570560+3293786499&rt=rud
thickness (mm): 0.319
weight (g/cm^2):
notes: MERV 13 rating, $19.99 for 35x60cm of material, "outperforms figberglass" so potentially not mad eof fiberglass
<!DOCTYPE html>
<html>
<h1>3M_300MPR</h1>
<ul style="list-style-type:none;">
<li><b>name</b>: 3M 300 MPR
</li>
<li><b>manufacture link</b>: <a href=" https://www.filtrete.com/3M/en_US/filtrete/products/~/Filtrete-Clean-Living-Air-Filters/?N=4315+3292676072+3294529207&preselect=7568680+7570556+3293786499&rt=rud
"> Clean Living Filtrete</a></li>
<li><b>thickness (mm)</b>: 0.292
</li>
<li><b>weight (g/cm^2)</b>:
</li>
<li><b>notes</b><ul style="list-tyle-type:none;"><li> MERV 5 rating</li><li> $5.59 for 40x50cm of material
</li></ul></li>
<br><img src="./IMG_3946.jpg" height="400"><br>IMG_3946<br>
<br><img src="./IMG_3947.jpg" height="400"><br>IMG_3947<br>
<br><img src="./SEM/3M_filtrete300_20nmAu_top_0004_rep.jpg" height="400"><br>3M_filtrete300_20nmAu_top_0004_rep<br>
<br><img src="./SEM/3M_filtrete300_20nmAu_top_0002_raw.jpg" height="400"><br>3M_filtrete300_20nmAu_top_0002_raw<br>
<br><img src="./SEM/3M_filtrete300_20nmAu_top_0007.jpg" height="400"><br>3M_filtrete300_20nmAu_top_0007<br>
<br><img src="./SEM/3M_filtrete300_20nmAu_top_0001_raw.jpg" height="400"><br>3M_filtrete300_20nmAu_top_0001_raw<br>
<br><img src="./SEM/3M_filtrete300_20nmAu_top_0009_raw.jpg" height="400"><br>3M_filtrete300_20nmAu_top_0009_raw<br>
<br><img src="./SEM/3M_filtrete300_20nmAu_top_0008.jpg" height="400"><br>3M_filtrete300_20nmAu_top_0008<br>
</html>
\ No newline at end of file
name: 3M 300 MPR
manufacture link: Clean Living Filtrete, https://www.filtrete.com/3M/en_US/filtrete/products/~/Filtrete-Clean-Living-Air-Filters/?N=4315+3292676072+3294529207&preselect=7568680+7570556+3293786499&rt=rud
thickness (mm): 0.292
weight (g/cm^2):
notes: MERV 5 rating, $5.59 for 40x50cm of material
<!DOCTYPE html>
<html>
<h1>3M_N95</h1>
<ul style="list-style-type:none;">
<li><b>name</b>: 3M N95
</li>
<li><b>manufacture link</b>: <a href=" http://multimedia.3m.com/mws/media/218306O/particle-respirator-8000-n95.pdf
"> 3M N95 800</a></li>
<li><b>thickness (mm)</b>: 0.721
</li>
<li><b>weight (g/cm^2)</b>: 0.0223
</li>
<li><b>notes</b><ul style="list-tyle-type:none;"><li> electrostatically charged microfibers for "breathing easier and cooler"</li><li> looks like it could be three layer mask but the layers don't fall apart like the Gerson N95</li><li> no sputter coating for imaging samples</li><li> imaged from the top and side of the sample to get a better sense of how the material is sandwiched into three layer
</li></ul></li>
<br><img src="./3MN95_mask.jpg" height="400"><br>3MN95_mask<br>
<br><img src="./SEM/3MN95_nosputter_top_0003_rep.jpg" height="400"><br>3MN95_nosputter_top_0003_rep<br>
<br><img src="./SEM/3MN95_nosputter_side_0001_raw.jpg" height="400"><br>3MN95_nosputter_side_0001_raw<br>
<br><img src="./SEM/3MN95_nosputter_side_0004_raw.jpg" height="400"><br>3MN95_nosputter_side_0004_raw<br>
<br><img src="./SEM/3MN95_nosputter_top_0002_raw.jpg" height="400"><br>3MN95_nosputter_top_0002_raw<br>
<br><img src="./SEM/3MN95_nosputter_side_0002.jpg" height="400"><br>3MN95_nosputter_side_0002<br>
<br><img src="./SEM/3MN95_nosputter_top_0001_raw.jpg" height="400"><br>3MN95_nosputter_top_0001_raw<br>
<br><img src="./optical/top_1.jpg" height="400"><br>top_1<br>
<br><img src="./optical/top_3.jpg" height="400"><br>top_3<br>
</html>
\ No newline at end of file
name: 3M N95
manufacture link: 3M N95 800, http://multimedia.3m.com/mws/media/218306O/particle-respirator-8000-n95.pdf
thickness (mm): 0.721
weight (g/cm^2): 0.0223
notes: electrostatically charged microfibers for "breathing easier and cooler", looks like it could be three layer mask but the layers don't fall apart like the Gerson N95, no sputter coating for imaging samples, imaged from the top and side of the sample to get a better sense of how the material is sandwiched into three layer
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment