#!/usr/bin/env python3 # -*- coding: utf-8 -*- """ Created on Wed Aug 19 14:33:51 2020 @author: tanu """ #%% load packages import os,sys import subprocess import argparse import requests import re import time from bs4 import BeautifulSoup import pandas as pd from pandas.api.types import is_string_dtype from pandas.api.types import is_numeric_dtype #%% homedir homedir = os.path.expanduser('~') print('My homedir is:', homedir) #%% def request_calculation(pdb_file , mutation_list , batch_no , chain , my_email , prediction_url , output_dir #, gene_name #, out_url_file ): """ Makes a POST request for dynamut predictions. @param pdb_file: valid path to pdb structure @type string @param mutation_list: list of mutations (1 per line) of the format: {WT}{Mut} @type string @param batch_no: batch no so it can be added as a suffix to the the outfile @type int @param chain: single-letter(caps) @type chr @param prediction_url: dynamut url for prediction @type string @param output_dir: output dir @type string @param gene_name: name of gene @type string #@param out_url_file: name of output file with batch no. as suffix @type string @return txt file containing batch no. of snps processed (i.e out_url_file) @type string """ with open(pdb_file, "rb") as pdb_file, open (mutation_list, "rb") as mutation_list: files = {"wild": pdb_file , "mutation_list": mutation_list} body = {"chain": chain , "email": my_email} response = requests.post(prediction_url, files = files, data = body) print(response.status_code) if response.history: print('\nPASS: valid submission. Fetching result url') url_match = re.search('/dynamut/results_prediction/.+(?=")', response.text) url = host + url_match.group() print('\nURL for snp batch no ', str(batch_no), ':', url) #=============== # writing file: result urls #=============== dynamut_temp_dir = outdir + '/dynamut_temp' if not os.path.exists(dynamut_temp_dir): print('\nCreating dynamut_temp in outdir', outdir ) os.makedirs(dynamut_temp_dir) out_url_file = dynamut_temp_dir + '/dynamut_result_url_batch_' + str(batch_no) + '.txt' print('\nWriting output url file:', out_url_file) myfile = open(out_url_file, 'a') myfile.write(url) myfile.close() #%%globals!? host = 'http://biosig.unimelb.edu.au' #prediction_url = f"{host}/dynamut/prediction_list" #print(prediction_url) #gene = 'gid' drug = 'streptomycin' datadir = homedir + '/git/Data' indir = datadir + '/' + drug + '/input' outdir = datadir + '/' + drug + '/output' #outdir = homedir + '/git/LSHTM_analysis/dynamut' # for example my_chain = 'A' my_pdb_file = homedir + '/git/Data/streptomycin/input/gid_complex.pdb' # batch 1: 00.txt #my_mutation_list = homedir + '/git/Data/streptomycin/output/snp_batches/50/snp_batch_00.txt' #my_batch = 1 # batch 2: 01.txt my_mutation_list = outdir + '/snp_batches/50/snp_batch_01.txt' my_batch = 2 # %% call this function request_calculation (pdb_file = my_pdb_file , mutation_list = my_mutation_list , chain = my_chain , my_email = 'tanushree.tunstall@lshtm.ac.uk' , prediction_url = f"{host}/dynamut/prediction_list" , output_dir = outdir , batch_no = my_batch)