#!/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 #%%##################################################################### def submit_dynamut(host_url , pdb_file , mutation_list , chain , email_address , prediction_url , output_dir , outfile_suffix ): """ Makes a POST request for dynamut predictions. @param host_url: valid host url for submitting the job @type string @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 chain: single-letter(caps) @type chr @param email_address: email address to inform of results @type chr @param prediction_url: dynamut url for prediction @type string @param output_dir: output dir @type string @param outfile_suffix: to append to outfile @type string @return writes a .txt file containing url for the snps processed with user provided suffix in filename @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": email_address} 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 + url_match.group() print('\nURL for snp batch no ', str(outfile_suffix), ':', url) #=============== # writing file: result urls #=============== dynamut_temp_dir = output_dir + '/dynamut_temp' # creates a temp dir within output_dir if not os.path.exists(dynamut_temp_dir): print('\nCreating dynamut_temp in output_dir', output_dir ) os.makedirs(dynamut_temp_dir) out_url_file = dynamut_temp_dir + '/dynamut_result_url_' + str(outfile_suffix) + '.txt' print('\nWriting output url file:', out_url_file) myfile = open(out_url_file, 'a') myfile.write(url) myfile.close() #%%#####################################################################