AB-Pep-C / app.py
BalayogiG's picture
Added model
6542e1a verified
raw
history blame contribute delete
No virus
8.6 kB
# 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.")