File size: 2,672 Bytes
6abed4d
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
import datasets
import random
import numpy
import json
import gradio
import matplotlib.pyplot # for colormap
import matplotlib.colors # for color conversion

vr = datasets.load_dataset("cmudrc/porous-microstructure-strain-fields", data_files=['variable_radius.zip'], split='train')

vn = datasets.load_dataset("cmudrc/porous-microstructure-strain-fields", data_files=['variable_number.zip'], split='train')

circle = datasets.load_dataset("cmudrc/porous-microstructure-strain-fields", data_files=['circle/circle_test.zip'], split="train[:10]")

crescent = datasets.load_dataset("cmudrc/porous-microstructure-strain-fields", data_files=['crescent/crescent_test.zip'], split="train[:10]")

peanut = datasets.load_dataset("cmudrc/porous-microstructure-strain-fields", data_files=['peanut/peanut_test.zip'], split="train[:10]")

ellipse = datasets.load_dataset("cmudrc/porous-microstructure-strain-fields", data_files=['ellipse/ellipse_test.zip'], split="train[:10]")

triangle = datasets.load_dataset("cmudrc/porous-microstructure-strain-fields", data_files=['triangle/triangle_test.zip'], split="train[:10]")

rectangle = datasets.load_dataset("cmudrc/porous-microstructure-strain-fields", data_files=['rectangle/rectangle_test.zip'], split="train[:10]")

shapes = {
    "circle": circle,
    "crescent": crescent,
    "ellipse": ellipse,
    "peanut": peanut,
    "triangle": triangle,
    "rectangle": rectangle,
}

def randomize(selection):
    index = random.randint(0, 9)
    mask = 255*numpy.array(json.loads(shapes[selection]['Defects'][index]))
    v = numpy.array(json.loads(shapes[selection]['Strain'][index]))
    print(v)
    # Get the color map by name:
    cm = matplotlib.pyplot.get_cmap('RdBu')
    measure = max(v.max(), -v.min())
    print(measure)
    output = (v / measure)
    print(cm((numpy.multiply(output[:, :, 0], mask)+1.0)/2.0))
    return mask, cm((numpy.multiply(output[:, :, 0], mask/255.0)+1.0)/2.0), cm((numpy.multiply(output[:, :, 1], mask/255.0)+1.0)/2.0), cm((numpy.multiply(output[:, :, 2], mask/255.0)+1.0)/2.0)

with gradio.Blocks() as demo:
    selection = gradio.Dropdown(["circle", "crescent", "ellipse", "peanut", "triangle", "rectangle"], label="Select defect shape")
    with gradio.Row():
        with gradio.Column(label="Defects"):
            mask = gradio.Image()
        with gradio.Column(label="ε-xx"):
            exx = gradio.Image()
    with gradio.Row():
        with gradio.Column():
            eyy = gradio.Image(label="ε-yy")
        with gradio.Column():
            exy = gradio.Image(label="ε-xy")
    selection.change(fn=randomize, inputs=[selection], outputs=[mask, exx, eyy, exy])
demo.launch(debug=True)