| # import streamlit as st | |
| # import pandas as pd | |
| # import joblib | |
| # from sklearn.ensemble import RandomForestClassifier | |
| # import matplotlib.pyplot as plt | |
| # import seaborn as sns | |
| # # Load the trained model (ensure the model file is in the same directory) | |
| # model = joblib.load('model.pkl') | |
| # # Function to process new peptide sequences | |
| # def process_peptide_sequences(peptides): | |
| # # Example processing function, replace with actual preprocessing steps | |
| # compositions = [] | |
| # for peptide in peptides: | |
| # composition = {aa: peptide.count(aa) for aa in 'ACDEFGHIKLMNPQRSTVWY'} | |
| # compositions.append(composition) | |
| # return pd.DataFrame(compositions) | |
| # # Streamlit app | |
| # st.title("ABPep-C") | |
| # st.write("Classify peptide sequences as active or inactive against biofilm") | |
| # # Input: Peptide sequences | |
| # peptide_input = st.text_area("Enter peptide sequences (one per line)") | |
| # peptides = peptide_input.split('\n') | |
| # if st.button("Classify"): | |
| # if peptides: | |
| # # Process the input peptides | |
| # peptide_df = process_peptide_sequences(peptides) | |
| # # Predict using the trained model | |
| # predictions = model.predict(peptide_df) | |
| # results = pd.DataFrame({ | |
| # 'Peptide': peptides, | |
| # 'Prediction': predictions | |
| # }) | |
| # results['Prediction'] = results['Prediction'].map({0: 'Inactive', 1: 'Active'}) | |
| # # Display the results | |
| # st.write("Classification Results") | |
| # st.write(results) | |
| # # Display interactive graphs | |
| # st.write("Prediction Distribution") | |
| # fig, ax = plt.subplots() | |
| # sns.countplot(x='Prediction', data=results, ax=ax) | |
| # st.pyplot(fig) | |
| # st.write("Amino Acid Composition of Peptides") | |
| # amino_acid_counts = peptide_df.sum().reset_index() | |
| # amino_acid_counts.columns = ['Amino Acid', 'Count'] | |
| # fig, ax = plt.subplots() | |
| # sns.barplot(x='Amino Acid', y='Count', data=amino_acid_counts, ax=ax) | |
| # st.pyplot(fig) | |
| # else: | |
| # st.write("Please enter peptide sequences.") | |
| # # Save this script as app.py and run it using: streamlit run app. | |
| ####################################################################################################################################### | |
| # import streamlit as st | |
| # import pandas as pd | |
| # import joblib | |
| # from sklearn.ensemble import RandomForestClassifier | |
| # import matplotlib.pyplot as plt | |
| # import seaborn as sns | |
| # # Load the trained model (ensure the model file is in the same directory) | |
| # model = joblib.load('model.pkl') | |
| # # Function to process new peptide sequences | |
| # def process_peptide_sequences(peptides): | |
| # # Example processing function, replace with actual preprocessing steps | |
| # compositions = [] | |
| # for peptide in peptides: | |
| # composition = {aa: peptide.count(aa) for aa in 'ACDEFGHIKLMNPQRSTVWY'} | |
| # compositions.append(composition) | |
| # return pd.DataFrame(compositions) | |
| # # Custom CSS for font size and color | |
| # st.markdown(""" | |
| # <style> | |
| # .title { | |
| # font-size: 48px !important; | |
| # color: #4CAF50; | |
| # } | |
| # .subheader { | |
| # font-size: 24px !important; | |
| # color: #FF5722; | |
| # } | |
| # .text { | |
| # font-size: 18px !important; | |
| # } | |
| # </style> | |
| # """, unsafe_allow_html=True) | |
| # # Streamlit app | |
| # st.markdown('<h1 class="title">Ab-PepC</h1>', unsafe_allow_html=True) | |
| # st.markdown('<h2 class="subheader">Classify peptide sequences as active or inactive against biofilm</h2>', unsafe_allow_html=True) | |
| # # Input: Peptide sequences | |
| # peptide_input = st.text_area("Enter peptide sequences (one per line)") | |
| # peptides = peptide_input.split('\n') | |
| # if st.button("Classify"): | |
| # if peptides: | |
| # # Process the input peptides | |
| # peptide_df = process_peptide_sequences(peptides) | |
| # # Predict using the trained model | |
| # predictions = model.predict(peptide_df) | |
| # results = pd.DataFrame({ | |
| # 'Peptide': peptides, | |
| # 'Prediction': predictions | |
| # }) | |
| # results['Prediction'] = results['Prediction'].map({0: 'Inactive', 1: 'Active'}) | |
| # # Display the results | |
| # st.markdown('<h3 class="subheader">Classification Results</h3>', unsafe_allow_html=True) | |
| # st.dataframe(results) | |
| # # Display interactive graphs | |
| # st.markdown('<h3 class="subheader">Prediction Distribution</h3>', unsafe_allow_html=True) | |
| # fig, ax = plt.subplots() | |
| # sns.countplot(x='Prediction', data=results, ax=ax) | |
| # ax.set_xlabel('Prediction', fontsize=18) | |
| # ax.set_ylabel('Count', fontsize=18) | |
| # st.pyplot(fig) | |
| # st.markdown('<h3 class="subheader">Amino Acid Composition of Peptides</h3>', unsafe_allow_html=True) | |
| # amino_acid_counts = peptide_df.sum().reset_index() | |
| # amino_acid_counts.columns = ['Amino Acid', 'Count'] | |
| # fig, ax = plt.subplots() | |
| # sns.barplot(x='Amino Acid', y='Count', data=amino_acid_counts, ax=ax) | |
| # ax.set_xlabel('Amino Acid', fontsize=18) | |
| # ax.set_ylabel('Count', fontsize=18) | |
| # st.pyplot(fig) | |
| # else: | |
| # st.write("Please enter peptide sequences.") | |
| ####################################################################################################################################### | |
| import streamlit as st | |
| import pandas as pd | |
| import joblib | |
| from sklearn.ensemble import RandomForestClassifier | |
| import matplotlib.pyplot as plt | |
| import seaborn as sns | |
| # Load the trained model (ensure the model file is in the same directory) | |
| model = joblib.load('model.pkl') | |
| # Function to process new peptide sequences | |
| def process_peptide_sequences(peptides): | |
| # Example processing function, replace with actual preprocessing steps | |
| compositions = [] | |
| for peptide in peptides: | |
| composition = {aa: peptide.count(aa) for aa in 'ACDEFGHIKLMNPQRSTVWY'} | |
| compositions.append(composition) | |
| return pd.DataFrame(compositions) | |
| # Custom CSS for font size and color | |
| st.markdown(""" | |
| <style> | |
| .title { | |
| font-size: 48px !important; | |
| color: #4CAF50; | |
| } | |
| .subheader { | |
| font-size: 24px !important; | |
| color: #FF5722; | |
| } | |
| .text { | |
| font-size: 18px !important; | |
| } | |
| </style> | |
| """, unsafe_allow_html=True) | |
| # Streamlit app | |
| col1, col2 = st.columns([1, 4]) # Adjust the width ratio as needed | |
| col1.image('Ab-PepC_logo.png', width=150) # Add your logo file path here | |
| with col2: | |
| st.markdown('<h1 class="title">ABPep-C</h1>', unsafe_allow_html=True) | |
| st.markdown('<h2 class="subheader">Classify peptide sequences as active or inactive against biofilm</h2>', unsafe_allow_html=True) | |
| # Input: Peptide sequences | |
| peptide_input = st.text_area("Enter peptide sequences (one per line)") | |
| peptides = peptide_input.split('\n') | |
| if st.button("Classify"): | |
| if peptides: | |
| # Process the input peptides | |
| peptide_df = process_peptide_sequences(peptides) | |
| # Predict using the trained model | |
| predictions = model.predict(peptide_df) | |
| results = pd.DataFrame({ | |
| 'Peptide': peptides, | |
| 'Prediction': predictions | |
| }) | |
| results['Prediction'] = results['Prediction'].map({0: 'Inactive', 1: 'Active'}) | |
| # Display the results | |
| st.markdown('<h3 class="subheader">Classification Results</h3>', unsafe_allow_html=True) | |
| st.dataframe(results) | |
| # Display interactive graphs | |
| st.markdown('<h3 class="subheader">Prediction Distribution</h3>', unsafe_allow_html=True) | |
| fig, ax = plt.subplots() | |
| sns.countplot(x='Prediction', data=results, ax=ax) | |
| ax.set_xlabel('Prediction', fontsize=18) | |
| ax.set_ylabel('Count', fontsize=18) | |
| st.pyplot(fig) | |
| st.markdown('<h3 class="subheader">Amino Acid Composition of Peptides</h3>', unsafe_allow_html=True) | |
| amino_acid_counts = peptide_df.sum().reset_index() | |
| amino_acid_counts.columns = ['Amino Acid', 'Count'] | |
| fig, ax = plt.subplots() | |
| sns.barplot(x='Amino Acid', y='Count', data=amino_acid_counts, ax=ax) | |
| ax.set_xlabel('Amino Acid', fontsize=18) | |
| ax.set_ylabel('Count', fontsize=18) | |
| st.pyplot(fig) | |
| else: | |
| st.write("Please enter peptide sequences.") | |