Commit 9373675a by Mustafa Tekpinar

Several small changes related to the name change.

parent f32168f1
[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
![image info](./images/esgemme-image.png)
# PRESCOTT: Evolutionary and Structural Global Epistatic Model for Mutational Effects
# ![image info](./images/esgemme-image.png)
# PRESCOTT: Population awaRe Epistatic and StruCtural mOdel of muTational effecTs
## Introduction
PRESCOTT is a program predicting mutational effects of a protein based on evolutionary and structural information.
PRESCOTT is a program predicting mutational effects of a protein based on population, evolutionary and structural information.
It can calculate effects of single point mutations and multiple point mutations.
We recommend using PRESCOTT via our web site or our docker image.
......@@ -32,12 +32,12 @@ Let's assume that our input MSA is inputAli.fasta and input.pdb is our structure
Run the program by issuing the following command in a bash terminal:
```bash
python $PRESCOTT_PATH/esgemme.py inputAli.fasta --pdbfile input.pdb
escott inputAli.fasta --pdbfile input.pdb
```
A quick help can be accessed by typing
```bash
python $PRESCOTT_PATH/esgemme.py --help
escott --help
```
By default, GEMME will predict the effect of all possible single mutations at all positions in the
......
......@@ -20,7 +20,7 @@ then
echo "Running PRESCOTT with a user-provided alignment file."
echo "Using a previously produced prot_jet.res file to check reproducibility!"
esgemme ../data/aliBLAT.fasta -f ../data/aliBLAT.fasta --jetfile ../data/BLAT_jet.res
escott ../data/aliBLAT.fasta -f ../data/aliBLAT.fasta --jetfile ../data/BLAT_jet.res
elif [ "$1" == "withpdb" ]
then
......@@ -28,7 +28,7 @@ then
#Please note that CV isa structural feature and it can not be calculated if you don't specify a pdb file.
echo "Using blat-af2.pdb for the structural feature calculations!"
echo "Entire mutational map of the protein will be calculated!"
esgemme ../data/aliBLAT.fasta -f ../data/aliBLAT.fasta \
escott ../data/aliBLAT.fasta -f ../data/aliBLAT.fasta \
--pdbfile ../data/blat-af2.pdb
elif [ "$1" == "withpdb-withmutfile" ]
......@@ -37,13 +37,13 @@ then
#Please note that CV isa structural feature and it can not be calculated if you don't specify a pdb file.
echo "Using blat-af2.pdb for the structural feature calculations!"
echo "Only effects of mutations specified in the Stiffler_2015_BLAT_ECOLX.mut file will be calculated!"
esgemme ../data/aliBLAT.fasta -f ../data/aliBLAT.fasta \
escott ../data/aliBLAT.fasta -f ../data/aliBLAT.fasta \
--pdbfile ../data/blat-af2.pdb -m ../data/Stiffler_2015_BLAT_ECOLX.mut
demust compare -i ../data/BLAT_ECOLX_Stiffler_2015_experimental.dat --itype singleline -j BLAT_normPred_evolCombi.txt --jtype singleline
else
echo "Running EGEMME with a user-provided alignment file."
echo "Since a pdb file is not provided, only evolutionary information will be used!"
esgemme ../data/aliBLAT.fasta -f ../data/aliBLAT.fasta
escott ../data/aliBLAT.fasta -f ../data/aliBLAT.fasta
fi
......@@ -207,10 +207,10 @@ def launchJET(prot, retMet, bFile, fFile, pdbfile, chains, n, N, nl):
# shutil.copy2(os.path.join(esgemme_path, "default.conf"), os.getcwd())
# esgemme_default_conf_path = importlib.resources.path('esgemme', 'default.conf')
# print(esgemme_default_conf_path)
source = files('esgemme').joinpath('default.conf')
with as_file(source) as esgemme_default_conf_path:
source = files('prescott').joinpath('default.conf')
with as_file(source) as prescott_default_conf_path:
#third_party_api_requiring_file_system_path(eml)
shutil.copy2(esgemme_default_conf_path, os.getcwd())
shutil.copy2(prescott_default_conf_path, os.getcwd())
if retMet=="input":
......@@ -315,17 +315,17 @@ def launchPred(prot,inAli,mutFile, normWeightMode, alphabet):
# Removing this dependency makes the code more portable.
# Therefore, I copy the R scripts that are saved as the
# package resources to the current working directory.
source = files('esgemme').joinpath('pred.R')
with as_file(source) as esgemme_pred_R_path:
shutil.copy2(esgemme_pred_R_path, os.getcwd())
source = files('prescott').joinpath('pred.R')
with as_file(source) as prescott_pred_R_path:
shutil.copy2(prescott_pred_R_path, os.getcwd())
source = files('esgemme').joinpath('computePred.R')
with as_file(source) as esgemme_computePred_R_path:
shutil.copy2(esgemme_computePred_R_path, os.getcwd())
source = files('prescott').joinpath('computePred.R')
with as_file(source) as prescott_computePred_R_path:
shutil.copy2(prescott_computePred_R_path, os.getcwd())
source = files('esgemme').joinpath('alphabets/'+alphabet+'.txt')
with as_file(source) as esgemme_alphabet:
shutil.copy2(esgemme_alphabet, os.getcwd())
source = files('prescott').joinpath('alphabets/'+alphabet+'.txt')
with as_file(source) as prescott_alphabet:
shutil.copy2(prescott_alphabet, os.getcwd())
if (mutFile!=''):
# rcmd="Rscript --save $PRESCOTT_PATH/computePred.R "+prot+" "+inAli+" FALSE "+mutFile+" "+normWeightMode+" "+alphabet
......@@ -784,11 +784,11 @@ def check_argument_groups(parser, arg_dict, group, argument):
group_name = group.replace("-", "")
if arg_dict[group_name]=="input":
if c!=1:
parser.error("esgemme requires " + str(argument) + \
parser.error("escott requires " + str(argument) + \
" if " + group + " is set to input.")
else:
if c>0:
parser.error("esgemme requires " + group +
parser.error("escott requires " + group +
" to be set to input if " + str(argument) + " is used.")
return None
def calculateSecondaryStructure(pdbfile, coilBreakerLength):
......@@ -891,11 +891,11 @@ def countCoilSegments(inputfile):
def parse_command_line():
"""
Parse command line.
It uses argparse to parse 'esgemme' command line arguments and returns the
It uses argparse to parse 'escott' command line arguments and returns the
argparse parser.
"""
parser = argparse.ArgumentParser(
prog="esgemme",
prog="escott",
description="""
PRESCOTT (Evolutionary and Structural Global Epistasis Model for predicting Mutational Effects)
is a tool to predict mutational outcomes based on sequence and structure analysis
......@@ -1382,7 +1382,7 @@ def doit(inAli,mutFile,retMet,bFile,fFile,n,N, jetfile, pdbfile, normWeightMode,
#Check if the normalized data files were created.
if(os.path.exists(prot+"_normPred_evolCombi.txt")):
gemmeData = parseGEMMEoutput(prot+"_normPred_evolCombi.txt", verbose=True)
gemmeData = parseGEMMEoutput(prot+"_normPred_evolCombi.txt", verbose=False)
sequenceLength = len(gemmeData[0])
beginning = 1
end = sequenceLength
......@@ -1457,7 +1457,7 @@ def main():
toc = time.perf_counter()
print(f"PRESCOTT computation finished in {toc - tic:0.4f} seconds!")
print(f"ESCOTT computation finished in {toc - tic:0.4f} seconds!")
if (__name__ == '__main__'):
main()
......
################################################################################
# esgemme - A Python program to predict mutational effects of proteins. #
##################################################################################
# prescott: Population awaRe Epistatic and StruCtural mOdel of muTational effecTs#
# Authors: Mustafa Tekpinar #
# Copyright (c) Mustafa Tekpinar - Alessandra Carbone 2023 #
# #
# This file is part of esgemme. #
# This file is part of prescott. #
# #
# License: MIT License #
# #
# Permission is hereby granted, free of charge, to any person obtaining a copy #
# of this software and associated documentation files (the "Software"), to deal#
# of this software and associated documentation files (the "Software"), to deal #
# in the Software without restriction, including without limitation the rights #
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell #
# copies of the Software, and to permit persons to whom the Software is #
......@@ -21,24 +21,24 @@
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, #
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE #
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER #
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,#
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE#
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, #
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE #
# SOFTWARE. #
################################################################################
##################################################################################
from setuptools import setup, find_packages
from esgemme import __version__ as cp_vers
from prescott import __version__ as cp_vers
setup(name='esgemme',
setup(name='prescott',
version=cp_vers,
description="PRESCOTT: A Python program to predict mutational effects of proteins.",
description="PRESCOTT: Population awaRe Epistatic and StruCtural mOdel of muTational effecTs.",
long_description=open('README.md').read(),
long_description_content_type="text/markdown",
author="Mustafa Tekpinar",
author_email="tekpinar@buffalo.edu",
url="https://github.com/tekpinar/esgemme",
download_url="https://github.com/tekpinar/esgemme",
url="https://github.com/tekpinar/prescott",
download_url="https://github.com/tekpinar/prescott",
license="MIT",
classifiers=[
'Development Status :: 5 - Production/Stable',
......@@ -59,9 +59,9 @@ setup(name='esgemme',
# file where some variables must be fixed by install
entry_points={
'console_scripts': [
'esgemme=esgemme.esgemme:main'
'escott=prescott.escott:main'
]
},
include_package_data=True,
package_data={'esgemme':['default.conf', 'computePred.R', 'pred.R', 'alphabets/*']},
package_data={'prescott':['default.conf', 'computePred.R', 'pred.R', 'alphabets/*']},
)
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment