File size: 7,613 Bytes
031e5e2
f415539
 
 
 
 
 
 
 
6d96e89
1e46fba
7fd91ba
 
64906bc
58f85ab
7bf24bf
6533513
1e46fba
f415539
 
031e5e2
 
6d737a4
 
f415539
6d737a4
 
 
 
 
f415539
 
 
031e5e2
6d737a4
dc24386
6d737a4
031e5e2
bc82aca
 
 
dc24386
bc82aca
e8aca7b
 
bc82aca
ad01b2c
03843da
 
 
 
 
ad01b2c
 
 
 
e8aca7b
 
 
ad01b2c
d69ba73
ad01b2c
 
e8aca7b
 
 
ad01b2c
e8aca7b
ad01b2c
e8aca7b
03843da
 
 
 
ad01b2c
 
 
 
 
 
 
 
 
f415539
 
 
ad01b2c
9a5a3c9
ad01b2c
 
f415539
 
 
 
 
ad01b2c
1e46fba
 
 
58f85ab
 
1e46fba
 
 
 
 
 
 
7bf24bf
 
 
 
105eeb0
30b6f7a
 
7bf24bf
 
 
105eeb0
7bf24bf
 
 
6533513
 
 
 
 
 
 
e385524
105eeb0
8eafb9f
 
 
 
 
 
 
30b6f7a
 
8eafb9f
 
 
 
 
 
 
30b6f7a
c0da2c3
8eafb9f
 
 
 
 
 
 
7bf24bf
 
 
 
 
 
 
 
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
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
import streamlit as st
import json
import os
# shifted from below - this must be the first streamlit call; otherwise: problems
st.set_page_config(page_title = 'Climate Policy Analysis Assistant', 
                   initial_sidebar_state='expanded', layout="wide")

import logging
logging.getLogger().setLevel(logging.INFO)
from utils.uploadAndExample import add_upload
import appStore.doc_processing as processing
import appStore.tapp as tapp_extraction
import appStore.adapmit as adapmit
import appStore.sector as sector
import appStore.subtarget as subtarget
import appStore.tapp_display as tapp_display
import appStore.excel_convert as excel_convert
from PIL import Image
import pkg_resources
installed_packages = pkg_resources.working_set


with st.sidebar:
    # upload and example doc
    
    choice = st.sidebar.radio(label = 'Select the Document',
                            help = 'You can upload the document \
                            or else you can try a example document', 
                            options = ('Upload Document', 'Try Example'), 
                            horizontal = True)
    with(open('docStore/sample/files.json','r')) as json_file:
            files = json.load(json_file)
    add_upload(choice, files) 

with st.container():
        st.markdown("<h2 style='text-align: center; color: black;'> Climate Policy Analysis Assistant </h2>", unsafe_allow_html=True)
        st.write(' ')

with st.expander("ℹ️ - About this app", expanded=False):
    st.write(
        """
        Climate Policy Analysis Assistant (CPo_droid) is an open-source\
        digital tool which aims to assist policy analysts and \
        other users in extracting and filtering  \
        information from public documents in context of Climate Change Commitments and Strategies.
        """)

    c1, c2, c3 =  st.columns([12,1,10])
    with c1:
        st.write('**Definitions**')

        st.caption("""
            - **Target**: Targets are an intention to achieve a specific result, \
            for example, to reduce GHG emissions to a specific level \
            (a GHG target) or increase energy efficiency or renewable \
            energy to a specific level (a non-GHG target), typically by \ 
            a certain date. There are are 3 subclass of targets:
                - **Netzero**: Identifies if its Netzero Target or not.
                - **GHG Target**: GHG targets refer to contributions framed as targeted \
                              outcomes in GHG terms.
                - **NonGHG Target**: Targets/contributions framed in NOT GHG terms like energy efficiency, sectoral-target like Distribution of 100K electric stoves etc.
            - **Action**: Actions are an intention to implement specific means of \
             achieving GHG reductions, usually in forms of concrete projects.
            - **Policies**: Policies are domestic planning documents \
              such as policies, regulations or guidlines.
            - **Plans**: Plans  are broader than specific policies or actions, such as a general intention \ 
             to ‘improve efficiency’, ‘develop renewable energy’, etc. \
            These terms come from the World Bank's NDC platform and WRI's publication.
              """)
            
    #c1, c2, c3 =  st.columns([12,1,10])
    #with c1:
    #    image = Image.open('docStore/img/flow.jpg') 
    #    st.image(image)
    with c3:
        st.write("""
            What Happens in background?
            
            
    
            - Step 1: Once the document is provided to app, it undergoes *Pre-processing*.\
            In this step the document is broken into smaller paragraphs \
            (based on word/sentence count).
            - Step 2: The paragraphs are fed to **TAPP(Target/Action/Policy/Plan multilabel) Classifier** which detects if
            the paragraph contains any *TAPP* related information or not.
            - Step 3: The paragraphs which are detected containing some TAPP \
            related information are then fed to multiple classifier to enrich the 
            Information Extraction. These classifiers inlcude: Sector Classifier, Adaptation & Mitigation Classsifier, Conditionality Classifier.
    
            """)
        
        list_ = ""
        for package in installed_packages:
            list_ = list_ + f"{package.key}=={package.version}\n"
        st.download_button('Download Requirements', list_, file_name='requirements.txt')
                  
    st.write("")

# apps to be run
apps = [processing.app, tapp_extraction.app, adapmit.app, sector.app, subtarget.app]
#        conditional.app, , category.app]

multiplier_val =1/len(apps)
if st.button("Analyze Document"):
    prg = st.progress(0.0)
    for i,func in enumerate(apps):
        func()
        prg.progress((i+1)*multiplier_val)
    prg.empty()

if 'key1' in st.session_state:
    tapp_display.targets()
    tapp_display.actions()
    tapp_display.policy()
    tapp_display.plans()
    with st.sidebar:
        topic = st.radio(
                        "Which category you want to explore?",
                        ('Targets', 'Actions','Policy','Plans'))
    
    if topic == 'Targets':
        tapp_display.target_display()
        excel_convert.filter_dataframe('target_hits',['keep','text','Sector','Sub-Target','page'])
        with st.sidebar:
                st.write('-------------')
                df_xlsx = excel_convert.to_excel()
                st.download_button(label='📥 Download Result',
                            data=df_xlsx ,
                            file_name= os.path.splitext(os.path.basename(st.session_state['filename']))[0]+'.xlsx')
    elif topic == 'Actions':
        tapp_display.action_display()
        excel_convert.filter_dataframe('action_hits',['keep','text','Sector','page'])
        with st.sidebar:
                st.write('-------------')
                df_xlsx = excel_convert.to_excel()
                st.download_button(label='📥 Download Result',
                            data=df_xlsx ,
                            file_name= os.path.splitext(os.path.basename(st.session_state['filename']))[0]+'.xlsx')
    elif topic == 'Policy':
        tapp_display.policy_display()
        excel_convert.filter_dataframe('policy_hits',['keep','text','Sector','page'])
        with st.sidebar:
                st.write('-------------')
                df_xlsx = excel_convert.to_excel()
                st.download_button(label='📥 Download Result',
                            data=df_xlsx ,
                            file_name= os.path.splitext(os.path.basename(st.session_state['filename']))[0]+'.xlsx')
    elif topic == 'Plans':
        tapp_display.plans_display()
        excel_convert.filter_dataframe('plan_hits',['keep','text','Sector','page'])
        with st.sidebar:
                st.write('-------------')
                df_xlsx = excel_convert.to_excel()
                st.download_button(label='📥 Download Result',
                            data=df_xlsx ,
                            file_name= os.path.splitext(os.path.basename(st.session_state['filename']))[0]+'.xlsx')
        
        #excel_convert.filter_dataframe('target_hits',['keep','text','Parameter','page'])
        #with st.sidebar:
        #        st.write('-------------')
        #        df_xlsx = excel_convert.to_excel()
        #        st.download_button(label='📥 Download Result',
        #                    data=df_xlsx ,
        #                    file_name= os.path.splitext(os.path.basename(st.session_state['filename']))[0]+'.xlsx')