Primer de tot has d'anar a TCM Database@Taiwan on has de buscar cada taxinine i el taxol per poder baixarte el MOL2 una vegada fet això per porder baixarte cada CSV del taxol i de cada taxinine has de anar Swissdock el primer arxiu que et demana has d'anarte aquesta web Arxiu PDB has de buscar la teva proteina en el meu cas es la Bcl-xL i et donava el nombre de la teva proteina 1R2D on baixes el pdb que serà el primer arxiu que introduiràs al Swissdock. El segon arxiu que has de pujar es el MOL2 de cada un de les taxinines i del taxol on desprès et demana el teu correu que es on t'enviaran els resultats. Finalment quan es finalitzi el procediment t'enviaran l'enllaç on veuras la molecula i hauràs de selecionar de l'ultima columna elvalor en negatiu més gran de tota la columna, en fas una captura i et baixes el CSV i una mica més abaix tens per baixarte l'arxiu en Zip. En el meu cas m'ha tocat fer-ne la proteїna Bcl-xL que finalment es 1R2D, en el moment de fer-ne totes les taxinines en el swissdock n'he tingut un problema amb la taxinineH, però si sols en tens un que no et funciona no pasa res.
Error en la taxinineH:
Seguim amb el codig per poder pujar al GoogleColab (llenguatge: Python i R, també per treballar s'utilitza GPU i CPU) els CSV: Codig Grafics per poder borrar tots els valors en positiu i tots els que donen 0 has de pujar en el primer codig del GoogleColab (llenguatge: Python i R, també per treballar s'utilitza GPU i CPU) tots els arxius un per un per que es poduin modificar. Finalment per obtenir el grafic has d'anarte al segon codig del GoogleColab (llenguatge: Python i R, també per treballar s'utilitza GPU(targerta gràfica) i CPU) i pujar en ordre tots els arxius modificats anteriorment.
Imatges del Swissdock
Grafica definitiva:
En el meu cas amb la proteina Bcl-xL el resultat més alt de la gràfica es la de la taxinine B, ja que en aquesta proteina és normal que sigui més elevada per causa de com actua la proteina. La Bcl-xL actua com anti-apoptòtica evitant l'alliberament de continguts mitocondrials.
Altres gràfiques del GoogleColab:
Abans de posar el codi expliquem que esta fet en google.colab on puc triar python o R i CPU O GPU en nootebook settings. La GPU és més util en deeplearning perque permet procesament paral·lel o simultani de codi i la CPU és la unitat de prosesament del computador i pot tenir deiversos nuclis pero és mes lenta en deepearning o visió per ordinador
Si vull descarregar al google-colab ho puc fer i es descarregara e format IPYNB que significa interactive python notebook. Aquest arxiu es pot obrir amb un editor Jupyter que es pot instalar en ordinador descsarregant Anaconda. Hi ha dos versions Jupyter: Jupyter Notebook i Jupyter Lab que es poden descarregar localment n el ordinador i tenen el mateix aspecte i funcionalitat que google colab amb la avantatge i inconvenient de utilitzar totes les capasitats del teu ordinador
# 2. Upload deltaG_values.csv of every docking to generate a boxplot to obtain a summary table transposed data in csv and boxplot
# Has de pujar els diferents arxius i penjar cancel quan acabis, posar els noms en català (en aquest exemple: Taxinina A, etc)
# Després has d'escriure el codi PDB de la teva proteïna (en aquest exemple 4HFZ)
# Els signes d'exclamació o "bang" en anglès (!) indiquen que s'executi com si estigués en un terminal o shell (CMD). Per exemple, !pwd (print working directory) serveix per a saber en quin directori estic treballant al moment (carpeta, arxiu, disc...) o !cd que vol dir change directory, !ls que vol dir que em fagi un llistat dins del directori on estigui... !ls -l vol dir que té el paràmetre "long", és a dir que no només em digui els arxius sinó que també em digui els permisos dels arxius, que poden ser r (read, llegible), w (write, escribible), x (executable) de forma que per exemple un arxiu dirà: "arxiu.csv rwxrw-r--". Això significa que el super usuari o administrador té tots els permisos (rwd), un usuari normal només podrà llegir i escriure (rw-) i un convidat només podrà llegir l'arxiu (r--). Per canviar permisos utilitzem la instrucció "chmod" que significa "change mode" i vol dir que per exemple un arxiu que no podíem llegir, aplicant aquesta instrucció ara podrem executar-lo, llegir i escriure. La lletra r té un valor 1, la w un valor 2 i la lletra x un valor 4. Quan escric "chmod 777" es transforma en "rwxrwxrwx", és a dir, tan siguis administrador, usuari o convidat tindràs tots els permisos (les tres primeres lletres són de l'administrador, les tres segones de l'usuari i les tres últimes del convidat). Si poso "chmod 543" (5=4+1=permís administrador, 4=4=permís usuari, 3=1+2=permís convidat) sortirà "r-x--xrw-", que vol dir que l'administrador podrà llegir i executar, l'usuari només executar i el convidat podrà llegir i escriure. !ls -a significa veure tots els arxius (all), i !ls -la buscarà tots els arxius, inclosos els ocults i mostrarà els seus permisos. "!mkdir" vol dir make directory amb el nom que posem a continuació, és a dir, "!mkdir noudirectori" crea un directori amb el nom "noudirectori". "!rm deltaG.csv" esborrarà l'arxiu "deltaG.csv", ja que "rm" vol dir remove. Es poden posar dues admiracions (!!) que el que farien es executar a la cel·la i mostrar la sortida.
from google.colab import files
import pandas as pd
import matplotlib.pyplot as plthttps://neocities.org/site_files/text_editor?filename=Programaci%C3%B3%2Fdocking%2Findex.html#
import io
import numpy as np
# Initialize an empty list to store DataFrame objects
dfs = [] //data frames pandas
# Upload CSV files one by one
print("Upload CSV files one by one. Press Cancel to stop uploading.")
while True:
uploaded_files = files.upload() //estem accedint a un metode upload que perteneix a google.colab
if len(uploaded_files) == 0:
break
for filename, contents in uploaded_files.items():
# Read CSV file as DataFrame and append it to the list
df = pd.read_csv(io.StringIO(contents.decode('utf-8')), header=None)
# Add a column to identify the compound
df['Compound'] = f'Compound {chr(ord("A") + len(dfs))}'
dfs.append(df)
# Concatenate DataFrames vertically
combined_df = pd.concat(dfs, ignore_index=True)
# Transpose the DataFrame so that rows become columns
transposed_df = combined_df.set_index('Compound').T
# Save the transposed DataFrame to a new CSV file
transposed_csv_path = 'transposed_data.csv'
transposed_df.to_csv(transposed_csv_path)
# Prompt the user to enter real chemical names for each compound
real_names_mapping = {}
for i, df_name in enumerate(transposed_df.columns):
real_name = input(f"Enter the real chemical name for {df_name}: ")
real_names_mapping[df_name] = real_name
# Prompt the user to enter the last word of the graph title
graph_title_suffix = input("Enter the last word of the graph title: ").strip()
# Create a customized boxplot for compounds
plt.figure(figsize=(8, 6))
# Set colors
box_color = 'blue'
median_color = 'orange'
whisker_color = 'green'
cap_color = 'purple'
# Create a boxplot
boxprops = dict(color=box_color)
medianprops = dict(color=median_color)
whiskerprops = dict(color=whisker_color)
capprops = dict(color=cap_color)
boxplot = transposed_df.boxplot(vert=False, return_type='dict', boxprops=boxprops, medianprops=medianprops, whiskerprops=whiskerprops, capprops=capprops)
# Overlay individual data points
for df_name in transposed_df.columns:
y = np.random.normal(list(transposed_df.columns).index(df_name) + 1, 0.1, size=len(transposed_df[df_name]))
plt.scatter(transposed_df[df_name], y, alpha=0.5, s=10)
# Set ticks and labels
plt.yticks(np.arange(1, len(transposed_df.columns) + 1), [real_names_mapping[col] for col in transposed_df.columns])
plt.xlabel("Energia d'unió (kcal/mol)")
plt.ylabel("Lligands")
plt.title(f"Acoblament molecular amb proteïna PDB {graph_title_suffix}")
plt.grid(True)
plt.axvline(x=0, color='red', linestyle='--') # Add line at 0 for reference
plt.tight_layout()
# Save the plot as an image file
plot_image_path = 'boxplot.png'
plt.savefig(plot_image_path)
# Download the transposed CSV file and the plot image
files.download(transposed_csv_path)
files.download(plot_image_path)
# Print paths to the saved files
print("Transposed data saved to:", transposed_csv_path)
print("Plot image saved to:", plot_image_path)