File size: 6,122 Bytes
9dcd3f9
7823114
9dcd3f9
c8e0175
f123b98
 
7823114
 
 
948d7f1
 
 
7823114
 
 
 
923adf2
948d7f1
6a85a81
 
 
 
5ae70f9
 
948d7f1
6a85a81
0c31d46
 
6a85a81
5ae70f9
 
948d7f1
 
 
 
923adf2
 
 
 
 
 
 
6b796a5
923adf2
7823114
6b796a5
 
7823114
343d08b
6b796a5
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
7823114
 
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
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
import streamlit as st
import pandas as pd

def show_multi_table(p1_df, p2_df):
        st.write("------------------")

        p1_df = p1_df.reset_index(drop=True)
        p2_df = p2_df.reset_index(drop=True)

        actual_ind = 0
        for i in range(len(p1_df) - 1, -1, -2): # stepsize because project matchs in both ways and it should only display a match one time
            actual_ind += 1
            match_df = pd.DataFrame()
            row_from_p1 = p1_df.iloc[[i]]
            row_from_p2 = p2_df.iloc[[i]]

            # INTEGRATE IN PREPROCESSING !!!
            # transform strings to list
            try:
                row_from_p1["crs_3_code_list"] = [row_from_p1['crs_3_code'].item().split(";")[:-1]]
                row_from_p2["crs_3_code_list"] = [row_from_p2['crs_3_code'].item().split(";")[:-1]]
            except:
                row_from_p1["crs_3_code_list"] = [""]
                row_from_p2["crs_3_code_list"] = [""]

            try:
                row_from_p1["crs_5_code_list"] = [row_from_p1['crs_5_code'].item().split(";")[:-1]]
                row_from_p2["crs_5_code_list"] = [row_from_p2['crs_5_code'].item().split(";")[:-1]]
            except:
                row_from_p1["crs_5_code_list"] = [""]
                row_from_p2["crs_5_code_list"] = [""]

            row_from_p1["sdg_list"] = [row_from_p1['sgd_pred_code'].item()]
            row_from_p2["sdg_list"] = [row_from_p2['sgd_pred_code'].item()]

            try:
                row_from_p1["flag"] = f"https://flagicons.lipis.dev/flags/4x3/{row_from_p1['country'].item()[:2].lower()}.svg"
                row_from_p2["flag"] = f"https://flagicons.lipis.dev/flags/4x3/{row_from_p2['country'].item()[:2].lower()}.svg"
            except:
                row_from_p1["flag"] = "https://flagicons.lipis.dev/flags/4x3/xx.svg"
                row_from_p2["flag"] = "https://flagicons.lipis.dev/flags/4x3/xx.svg"
            
            #print(row_from_p1["flag"].item())

            # Correctly append rows to match_df
            #st.subheader(f"#{actual_ind}")
            #st.caption(f"Similarity: {round(row_from_p1['similarity'].item(), 4) * 100}%")
            match_df = pd.concat([row_from_p1, row_from_p2], ignore_index=True)
            
            col1, col2 = st.columns([1, 12])
            with col1:
                
                # remove arrow from standart st.metric()
                st.write(
                    """
                    <style>
                    [data-testid="stMetricDelta"] svg {
                        display: none;
                    }
                    </style>
                    """,
                    unsafe_allow_html=True,
                )

                st.metric(label="Match", value=f"{actual_ind}", delta=f"~ {str(round(row_from_p1['similarity'].item(), 5) * 100)[:4]} %")

            with col2:
                st.write("    ")
                st.dataframe(
                    match_df[["iati_id", "title_main", "orga_abbreviation", "client", "description_main", "country_name", "flag", "sdg_list", "crs_3_code_list", "crs_5_code_list"]],
                    use_container_width = True,
                    height = 35 + 35 * len(match_df),
                    column_config={
                        "iati_id": st.column_config.TextColumn(
                            "IATI ID",
                            help="IATI Project ID",
                            disabled=True,
                            width="small"
                        ),
                        "orga_abbreviation": st.column_config.TextColumn(
                            "Organization",
                            help="If description not in English, description in other language provided",
                            disabled=True,
                            width="small"
                        ),
                        "client": st.column_config.TextColumn(
                            "Client",
                            help="Client organization of customer",
                            disabled=True,
                            width="small"
                        ),
                        "title_main": st.column_config.TextColumn(
                            "Title",
                            help="If title not in English, title in other language provided",
                            disabled=True,
                            width="large"
                        ),
                        "description_main": st.column_config.TextColumn(
                            "Description",
                            help="If description not in English, description in other language provided",
                            disabled=True,
                            width="large"
                        ),
                        "country_name": st.column_config.TextColumn(
                            "Country",
                            help="Country of project",
                            disabled=True,
                            width="small"
                        ),
                        "flag": st.column_config.ImageColumn(
                            "Flag",
                            help="country flag",
                            width="small"
                        ),
                        "sdg_list": st.column_config.ListColumn(
                            "SDG Prediction",
                            help="Prediction of SDG's",
                            width="small"
                        ),
                        "crs_3_code_list": st.column_config.ListColumn(
                            "CRS 3",
                            help="CRS 3 code given by organization",
                            width="small"
                        ),
                        "crs_5_code_list": st.column_config.ListColumn(
                            "CRS 5",
                            help="CRS 5 code given by organization",
                            width="small"
                        ),
                    },
                    hide_index=True,
                )

            st.write("------------------")