Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
P
PRESCOTT
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Mustafa Tekpinar
PRESCOTT
Commits
9373675a
Commit
9373675a
authored
Aug 09, 2023
by
Mustafa Tekpinar
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Several small changes related to the name change.
parent
f32168f1
Show whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
41 additions
and
41 deletions
+41
-41
README.md
README.md
+5
-5
example-esgemme-script.sh
examples/example-esgemme-script.sh
+4
-4
escott.py
prescott/escott.py
+18
-18
setup.py
setup.py
+14
-14
No files found.
README.md
View file @
9373675a
[
![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 Effect
s
# PRESCOTT:
Population awaRe Epistatic and StruCtural mOdel of muTational effecT
s
## 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
...
...
examples/example-esgemme-script.sh
View file @
9373675a
...
@@ -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!"
es
gemme
../data/aliBLAT.fasta
-f
../data/aliBLAT.fasta
--jetfile
../data/BLAT_jet.res
es
cott
../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!"
es
gemme
../data/aliBLAT.fasta
-f
../data/aliBLAT.fasta
\
es
cott
../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!"
es
gemme
../data/aliBLAT.fasta
-f
../data/aliBLAT.fasta
\
es
cott
../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!"
es
gemme
../data/aliBLAT.fasta
-f
../data/aliBLAT.fasta
es
cott
../data/aliBLAT.fasta
-f
../data/aliBLAT.fasta
fi
fi
prescott/escott.py
View file @
9373675a
...
@@ -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
(
"es
gemme
requires "
+
str
(
argument
)
+
\
parser
.
error
(
"es
cott
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
(
"es
gemme
requires "
+
group
+
parser
.
error
(
"es
cott
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 'es
gemme
' command line arguments and returns the
It uses argparse to parse 'es
cott
' command line arguments and returns the
argparse parser.
argparse parser.
"""
"""
parser
=
argparse
.
ArgumentParser
(
parser
=
argparse
.
ArgumentParser
(
prog
=
"es
gemme
"
,
prog
=
"es
cott
"
,
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
=
Tru
e
)
gemmeData
=
parseGEMMEoutput
(
prot
+
"_normPred_evolCombi.txt"
,
verbose
=
Fals
e
)
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
"
PR
ESCOTT 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
()
...
...
setup.py
View file @
9373675a
################################################################################
################################################################################
##
#
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 protein
s."
,
description
=
"PRESCOTT:
Population awaRe Epistatic and StruCtural mOdel of muTational effecT
s."
,
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'
:
[
'es
gemme=esgemme.esgemme
:main'
'es
cott=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/*'
]},
)
)
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment