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