/// <summary> /// Author: Andy Tang /// </summary> public static PDB_Information GetPDBInfo(Protein_Information protein, Drug_Information drug) { PDB_Information PDBInfo = null; if (protein == null || drug == null) { return(PDBInfo); } string uniprot_ID = protein.Uniprot_ID; string drug_PDB_ID = drug.Drug_PDB_ID; using (DrugProNETEntities context = new DrugProNETEntities()) { DbSet <PDB_Information> dbSet = context.PDB_Information; foreach (PDB_Information pdb in dbSet) { if (string.Equals(pdb.Uniprot_ID, uniprot_ID, StringComparison.OrdinalIgnoreCase) && string.Equals(pdb.Drug_PDB_ID, drug_PDB_ID, StringComparison.OrdinalIgnoreCase)) { PDBInfo = pdb; } } } return(PDBInfo); }
/// <summary> /// Author: Ryan Liang /// </summary> public void LoadPDB_Info(PDB_Information PDB_Info) { ProcessRow(PDB_File_ID_row, PDB_File_ID, PDB_Info.PDB_File_ID, "https://www.rcsb.org/structure/" + PDB_Info.PDB_File_ID); ProcessRow(release_date_row, release_date, PDB_Info.PDB_Released); ProcessRow(resolution_row, resolution, PDB_Info.Resolution); ProcessRow(title_row, title, PDB_Info.PDB_Entry_Title); ProcessRow(authors_row, authors, PDB_Info.Authors); ProcessRow(reference_row, reference, PDB_Info.Journal_Reference); }
/// <summary> /// Author: Ryan Liang /// </summary> public void LoadDrug(Drug_Information drug, PDB_Information PDB_Info) { ProcessRow(PDB_drug_ID_row, PDB_drug_ID, drug.Drug_PDB_ID); ProcessRow(drug_name_row, drug_name, drug.Drug_Common_Name); ProcessRow(drug_chemical_name, drug_chemical_name, drug.Drug_Chemical_Name); ProcessRow(drug_alias_row, drug_alias, drug.Other_Drug_Name_Alias); ProcessRow(drug_formula_row, drug_formula, drug.Drug_Formula); ProcessRow(drug_mass_da_row, drug_mass_da, drug.Molecular_Mass); ProcessRow(potency_row, potency, "IC50 (nM):" + PDB_Info.IC50_nM_ + " (BINDINGDB); Ki (nM): " + PDB_Info.Ki_nM_ + " (BINDINGDB); Kd(nM): " + PDB_Info.Kd_nM_ + " (BINDINGDB)"); ProcessRow(drug_information_result_url_row, drug_information_result_url, "Link to further drug information", "DrugInfoResult.aspx?query_string=" + drug.Drug_Name_for_Pull_Down_Menu); }
protected void LoadAminoAcidDropDown(object sender, EventArgs e) { amino_acid_specification_drop_down.Items.Clear(); amino_acid_specification_drop_down.Items.Add(DROP_DOWN_PROMPT_MESSAGE); try { if (drug_specification_drop_down.SelectedItem.Value != DROP_DOWN_PROMPT_MESSAGE) { Protein_Information protein = EF_Data.GetProtein(search_textBox.Text); Drug_Information drug = EF_Data.GetDrugUsingDropDownName(drug_specification_drop_down.SelectedItem.Value); PDB_Information PDB = EF_Data.GetPDBInfo(protein, drug); List <SNV_Mutation> mutations = EF_Data.GetMutations(protein.UniProt_ID, drug.Drug_PDB_ID, PDB.PDB_File_ID); if (mutations.Count > 0) { List <string> dropdownValues = new List <string>(); foreach (SNV_Mutation mutation in mutations) { dropdownValues.Add(mutation.SNV_Key); } dropdownValues = DataUtilities.FilterDropdownList(dropdownValues); foreach (string dropdownValue in dropdownValues) { amino_acid_specification_drop_down.Items.Add(dropdownValue); } } else { amino_acid_specification_drop_down.Items.Clear(); amino_acid_specification_drop_down.Items.Add(DROP_DOWN_NO_MATCHES_MESSAGE); } } } catch (Exception) { amino_acid_specification_drop_down.Items.Clear(); amino_acid_specification_drop_down.Items.Add(DROP_DOWN_PROMPT_MESSAGE); } }
/// <summary> /// Author: Andy Tang /// </summary> public static PDB_Information GetPDBInfo(Protein_Information protein, Drug_Information drug) { PDB_Information PDBInfo = null; if (protein == null || drug == null) { return(PDBInfo); } using (DrugProNETEntities context = new DrugProNETEntities()) { PDBInfo = context.PDB_Information.Where(pdb => pdb.UniProt_ID.Equals(protein.UniProt_ID, StringComparison.OrdinalIgnoreCase) && pdb.Drug_PDB_ID.Equals(drug.Drug_PDB_ID, StringComparison.OrdinalIgnoreCase) ).FirstOrDefault(); } return(PDBInfo); }
/// <summary> /// Author: Garth Nelson /// </summary> protected new void Page_Load(object sender, EventArgs e) { base.Page_Load(sender, e); try { string protein_specification = Request.QueryString["query_string"]; string drug_specification = Request.QueryString["drug_specification"]; string SNV_Key = Request.QueryString["snv_id_key"]; Session["SNV_Key"] = SNV_Key; Protein_Information protein = EF_Data.GetProtein(protein_specification); Drug_Information drug = EF_Data.GetDrugUsingDropDownName(drug_specification); PDB_Information PDB = EF_Data.GetPDBInfo(protein, drug); string[] SNV_KEYsplit = SNV_Key.Split('-'); // Retrieve second and third elements string amino_acid_specification = SNV_KEYsplit[1] + "-" + SNV_KEYsplit[2]; PDB_Interaction interaction = EF_Data.GetPDB_Interaction(protein.Uniprot_ID, drug.Drug_PDB_ID, amino_acid_specification); mutation = EF_Data.GetMutationBySNVKey(SNV_Key); Session["mutation"] = mutation; LoadProtein(protein, interaction, mutation); LoadDrug(drug, mutation); LoadPDB_Info(PDB); CreateSNVIdentificationTable(mutation); } catch (Exception) { Page.Master.FindControl("BodyContentPlaceHolder").Visible = false; ExceptionUtilities.DisplayAlert(this, QUERY_PAGE); } }
/// <summary> /// Author: Ryan Liang /// </summary> public void LoadPDB_Info(PDB_Information PDB_Info) { ProcessRow(PDB_entry_row, PDB_entry, PDB_Info.PDB_File_ID, "https://www.rcsb.org/structure/" + PDB_Info.PDB_File_ID); }
/// <summary> /// Author: Andy Tang, Ryan Liang /// </summary> protected new void Page_Load(object sender, EventArgs e) { base.Page_Load(sender, e); if (!IsPostBack) { string fromPage = null; string query_string = null; try { query_string = Request.QueryString["query_string"]; drug_specification = Request.QueryString["drug_specification"]; protein_specification = Request.QueryString["protein_specification"]; if (!string.IsNullOrEmpty(drug_specification)) { protein_specification = query_string; fromPage = "protein"; } else if (!string.IsNullOrEmpty(protein_specification)) { drug_specification = query_string; fromPage = "drug"; } drug = EF_Data.GetDrugsQuery(drug_specification).FirstOrDefault(); protein = EF_Data.GetProteinsInfoQuery(protein_specification).FirstOrDefault(); PDB = EF_Data.GetPDBInfo(protein, drug); Session["PDB_File_ID"] = PDB.PDB_File_ID; interaction_distance = double.Parse(Request.QueryString["interaction_distance"]); protein_chain = bool.Parse(Request.QueryString["protein_chain"]); protein_atoms = bool.Parse(Request.QueryString["protein_atoms"]); protein_residues = bool.Parse(Request.QueryString["protein_residues"]); protein_residue_numbers = bool.Parse(Request.QueryString["protein_residue_numbers"]); drug_atoms = bool.Parse(Request.QueryString["drug_atoms"]); Session["interaction_distance"] = interaction_distance; } catch (Exception) { throw; } if (drug == null || protein == null || PDB == null) { Page.Master.FindControl("BodyContentPlaceHolder").Visible = false; if (fromPage != null) { ExceptionUtilities.DisplayAlert(this, fromPage.Equals("drug") ? DRUG_QUERY_PAGE : PROTEIN_QUERY_PAGE); } else { ExceptionUtilities.DisplayAlert(this, DEFAULT_REDIRECT_PAGE); } } else { Session["interaction_distance"] = interaction_distance; Session["protein_chain"] = protein_chain; Session["protein_atoms"] = protein_atoms; Session["protein_residues"] = protein_residues; Session["protein_residue_numbers"] = protein_residue_numbers; Session["drug_atoms"] = drug_atoms; LoadProtein(protein); LoadDrug(drug, PDB); LoadPDB_Info(PDB); GetDrugAtomNumberingImage(drug); CreateInteractionList(PDB, interaction_distance, protein_chain, protein_atoms, protein_residues, protein_residue_numbers, drug_atoms); CreateInteractionSummary(); ScriptManager.RegisterStartupScript(Page, GetType(), "D_3DViewer", "javascript:loadDrugLigand('" + drug.Drug_PDB_ID + "');", true); ScriptManager.RegisterStartupScript(Page, GetType(), "PDB_3DViewer", "javascript:loadStage('" + drug.PDB_File_ID + "', '" + drug.Drug_PDB_ID + "');", true); } } }
/// <summary> /// Author: Ryan Liang /// </summary> private void CreateInteractionList(PDB_Information PDB, double interaction_distance, bool protein_chain, bool protein_atoms, bool protein_residues, bool protein_residue_numbers, bool drug_atoms) { TableHeaderRow tableHeaderRow = new TableHeaderRow { TableSection = TableRowSection.TableHeader }; tableHeaderRow.Cells.Add(new TableHeaderCell { Text = "Distance (Å)" }); if (protein_chain) { tableHeaderRow.Cells.Add(new TableHeaderCell { Text = "Protein Chain" }); } if (protein_residue_numbers) { tableHeaderRow.Cells.Add(new TableHeaderCell { Text = "Protein Residue Number" }); } if (protein_residues) { tableHeaderRow.Cells.Add(new TableHeaderCell { Text = "Amino Acid Residue Type" }); } if (protein_atoms) { tableHeaderRow.Cells.Add(new TableHeaderCell { Text = "Amino Acid Residue Atom" }); } if (drug_atoms) { tableHeaderRow.Cells.Add(new TableHeaderCell { Text = "Drug Atom" }); } interaction_list.Rows.Add(tableHeaderRow); var DistanceAndUniprotResidueNumbers = EF_Data.GetDistanceAndUniprotResidueNumbers(PDB.PDB_File_ID, interaction_distance); Session["DistanceAndUniprotResidueNumbers"] = DistanceAndUniprotResidueNumbers; foreach (KeyValuePair <PDB_Distance, string> kvp in DistanceAndUniprotResidueNumbers) { TableRow tableRow = new TableRow(); tableRow.Cells.Add(new TableCell { Text = kvp.Key.Distance.ToString("0.00") }); if (protein_chain) { tableRow.Cells.Add(new TableCell { Text = kvp.Key.Protein_Chain }); } if (protein_residue_numbers) { tableRow.Cells.Add(new TableCell { Text = kvp.Value }); } if (protein_residues) { tableRow.Cells.Add(new TableCell { Text = kvp.Key.Protein_Residue }); } if (protein_atoms) { tableRow.Cells.Add(new TableCell { Text = kvp.Key.Protein_Atom }); } if (drug_atoms) { tableRow.Cells.Add(new TableCell { Text = kvp.Key.Compound_Atom }); } interaction_list.Rows.Add(tableRow); } }