Skip to content
GitLab
Menu
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
Nicolas MAILLET
rpg
Commits
18551f60
Commit
18551f60
authored
May 25, 2021
by
Nicolas MAILLET
Browse files
Add IPC2 to RPG and make it the default one
parent
dce7a910
Pipeline
#57012
passed with stages
in 50 seconds
Changes
4
Pipelines
1
Hide whitespace changes
Inline
Side-by-side
rpg/RapidPeptidesGenerator.py
View file @
18551f60
...
...
@@ -272,9 +272,9 @@ def main():
"error(s) (--quiet enable, overwrite -v). If output "
"filename already exists, output file will be "
"overwritten."
)
parser
.
add_argument
(
"-p"
,
"--pka"
,
metavar
=
""
,
choices
=
[
'ipc'
,
'stryer'
],
default
=
"ipc"
,
help
=
"Define pKa values. Either 'ipc' "
"
or
'stryer' (default: ipc)"
)
parser
.
add_argument
(
"-p"
,
"--pka"
,
metavar
=
""
,
choices
=
[
'ipc
2
'
,
'stryer'
,
'ipc'
],
default
=
"ipc
2
"
,
help
=
"Define pKa values. Either 'ipc
2
' "
"'stryer'
or 'ipc' (deprecated)
(default: ipc
2
)"
)
group_output
=
parser
.
add_mutually_exclusive_group
()
group_output
.
add_argument
(
"-o"
,
"--outputfile"
,
type
=
str
,
metavar
=
""
,
default
=
""
,
help
=
"Optional result file "
...
...
@@ -306,9 +306,11 @@ def main():
args
.
miscleavage
=
[]
# No miscleavage on concurrent, infinite time
# --pka option
aa_pka
=
core
.
AA_PKA_IPC
aa_pka
=
core
.
AA_PKA_IPC
_2
if
args
.
pka
==
"stryer"
:
aa_pka
=
core
.
AA_PKA_S
elif
args
.
pka
==
"ipc"
:
aa_pka
=
core
.
AA_PKA_IPC
# --list option
if
args
.
list
:
...
...
rpg/core.py
View file @
18551f60
...
...
@@ -86,6 +86,17 @@ AA_PKA_IPC = {"Nterm" : 9.564,
"Y"
:
10.071
,
"Cterm"
:
2.383
}
"""pKa of important amino acid to compute pI (from IPC_peptide. See http://isoelectric.org/theory.html for details)."""
# IPC_peptide2
AA_PKA_IPC_2
=
{
"Nterm"
:
7.947
,
"C"
:
9.454
,
"D"
:
3.969
,
"E"
:
4.507
,
"H"
:
6.439
,
"K"
:
8.165
,
"R"
:
11.493
,
"Y"
:
9.153
,
"Cterm"
:
2.977
}
"""pKa of important amino acid to compute pI (from IPC_peptide2. See http://www.ipc2-isoelectric-point.org/ for details)."""
def
handle_errors
(
message
=
""
,
err
=
1
,
error_type
=
""
):
"""Custom handling of errors and warnings.
...
...
rpg/sequence.py
View file @
18551f60
...
...
@@ -68,9 +68,11 @@ class Peptide:
# self representation for print
def
__repr__
(
self
):
pka
=
"IPC"
pka
=
"IPC
2
"
if
self
.
aa_pka
==
core
.
AA_PKA_S
:
pka
=
"Stryer"
elif
self
.
aa_pka
==
core
.
AA_PKA_IPC
:
pka
=
"IPC"
return
"Original header: "
+
self
.
header
+
"
\n
No. peptide: "
+
\
str
(
self
.
nb_peptide
)
+
"
\n
Enzyme: "
+
self
.
enzyme_name
+
\
"
\n
Cleav. pos: "
+
str
(
self
.
position
)
+
"
\n
Pep. size: "
+
\
...
...
tests/test_functional.py
View file @
18551f60
...
...
@@ -9,6 +9,220 @@ from rpg import RapidPeptidesGenerator
@
pytest
.
fixture
def
truth
():
""" Solution """
return
[
">A0A2C9KB11/1065-1162_0_Trypsin_2_2_289.29138_5.98
\n
"
,
"DR
\n
"
,
">A0A2C9KB11/1065-1162_1_Trypsin_10_8_935.00128_4.29
\n
"
,
"EALDSSWK
\n
"
,
">A0A2C9KB11/1065-1162_2_Trypsin_11_1_146.18938_8.06
\n
"
,
"K
\n
"
,
">A0A2C9KB11/1065-1162_3_Trypsin_13_2_287.36218_9.71
\n
"
,
"LR
\n
"
,
">A0A2C9KB11/1065-1162_4_Trypsin_19_6_503.51548_9.71
\n
"
,
"SGAGGR
\n
"
,
">A0A2C9KB11/1065-1162_5_Trypsin_20_1_146.18938_8.06
\n
"
,
"K
\n
"
,
">A0A2C9KB11/1065-1162_6_Trypsin_25_5_529.59668_9.71
\n
"
,
"NAGIR
\n
"
,
">A0A2C9KB11/1065-1162_7_Trypsin_38_13_1623.99478_7.2
\n
"
,
"LVLWMLDHVPNMR
\n
"
,
">A0A2C9KB11/1065-1162_8_Trypsin_42_4_535.60048_8.06
\n
"
,
"NQFK
\n
"
,
">A0A2C9KB11/1065-1162_9_Trypsin_43_1_146.18938_8.06
\n
"
,
"K
\n
"
,
">A0A2C9KB11/1065-1162_10_Trypsin_54_11_1297.43618_7.2
\n
"
,
"FAHQPDSVLQR
\n
"
,
">A0A2C9KB11/1065-1162_11_Trypsin_64_10_1189.29028_3.89
\n
"
,
"DPEFLAQVDR
\n
"
,
">A0A2C9KB11/1065-1162_12_Trypsin_88_24_2545.84688_3.63
\n
"
,
"ILGGVESMINNVDDPVALEAAFDR
\n
"
,
">A0A2C9KB11/1065-1162_13_Trypsin_97_9_958.09728_5.22
\n
"
,
"LADAHLSMT
\n
"
,
">A0A2C9KB11/1221-1332_0_Trypsin_2_2_303.31828_6.23
\n
"
,
"ER
\n
"
,
">A0A2C9KB11/1221-1332_1_Trypsin_3_1_146.18938_8.06
\n
"
,
"K
\n
"
,
">A0A2C9KB11/1221-1332_2_Trypsin_6_3_330.42758_8.06
\n
"
,
"ALK
\n
"
,
">A0A2C9KB11/1221-1332_3_Trypsin_13_7_821.88518_5.87
\n
"
,
"SSWDSLK
\n
"
,
">A0A2C9KB11/1221-1332_4_Trypsin_38_25_2643.03068_6.23
\n
"
,
"SAAGGSQEAGVNLVLWMLQNVPNMR
\n
"
,
">A0A2C9KB11/1221-1332_5_Trypsin_40_2_289.29138_5.98
\n
"
,
"DR
\n
"
,
">A0A2C9KB11/1221-1332_6_Trypsin_53_13_1463.56938_5.37
\n
"
,
"FTFNAHQGDDALK
\n
"
,
">A0A2C9KB11/1221-1332_7_Trypsin_60_7_792.88708_4.29
\n
"
,
"ADAEFIK
\n
"
,
">A0A2C9KB11/1221-1332_8_Trypsin_64_4_529.59678_9.71
\n
"
,
"QVQR
\n
"
,
">A0A2C9KB11/1221-1332_9_Trypsin_81_17_1804.98958_3.89
\n
"
,
"ITGGLESMIDNLDNQGK
\n
"
,
">A0A2C9KB11/1221-1332_10_Trypsin_88_7_785.89848_5.98
\n
"
,
"LQAAIDR
\n
"
,
">A0A2C9KB11/1221-1332_11_Trypsin_110_22_2524.91728_5.5
\n
"
,
"LVDAHLHMTPSVGLEYFEPLQK
\n
"
,
">A0A2C9KB11/1221-1332_12_Trypsin_111_1_132.11908_5.46
\n
"
,
"N
\n
"
,
">A0A2C9KB11/1378-1486_0_Trypsin_2_2_289.29138_5.98
\n
"
,
"DR
\n
"
,
">A0A2C9KB11/1378-1486_1_Trypsin_3_1_146.18938_8.06
\n
"
,
"K
\n
"
,
">A0A2C9KB11/1378-1486_2_Trypsin_10_7_912.00988_6.12
\n
"
,
"YIESSWK
\n
"
,
">A0A2C9KB11/1378-1486_3_Trypsin_11_1_146.18938_8.06
\n
"
,
"K
\n
"
,
">A0A2C9KB11/1378-1486_4_Trypsin_21_10_947.99758_4.29
\n
"
,
"LTDAAGGSEK
\n
"
,
">A0A2C9KB11/1378-1486_5_Trypsin_38_17_1994.29828_5.98
\n
"
,
"AGTNFVFWLLDNVPNMR
\n
"
,
">A0A2C9KB11/1378-1486_6_Trypsin_40_2_289.29138_5.98
\n
"
,
"DR
\n
"
,
">A0A2C9KB11/1378-1486_7_Trypsin_59_19_2255.34168_4.12
\n
"
,
"FTFNAHQSDAALQEDEEFR
\n
"
,
">A0A2C9KB11/1378-1486_8_Trypsin_63_4_487.55648_8.06
\n
"
,
"NQVK
\n
"
,
">A0A2C9KB11/1378-1486_9_Trypsin_108_45_4677.21938_4.05
\n
"
,
"AITGGIESFVNNVNNPAALQSSIETLVDAHLNMQPSIGLSYFGSV
\n
"
,
">A0A2C9KB11/1535-1643_0_Trypsin_2_2_289.29138_5.98
\n
"
,
"DR
\n
"
,
">A0A2C9KB11/1535-1643_1_Trypsin_3_1_174.20278_9.71
\n
"
,
"R
\n
"
,
">A0A2C9KB11/1535-1643_2_Trypsin_10_7_775.90298_8.06
\n
"
,
"AVVSSWK
\n
"
,
">A0A2C9KB11/1535-1643_3_Trypsin_11_1_146.18938_8.06
\n
"
,
"K
\n
"
,
">A0A2C9KB11/1535-1643_4_Trypsin_17_6_603.67618_9.71
\n
"
,
"LTASGR
\n
"
,
">A0A2C9KB11/1535-1643_5_Trypsin_36_19_2281.67528_5.98
\n
"
,
"QSFGIDLVLWMFNNVPNMR
\n
"
,
">A0A2C9KB11/1535-1643_6_Trypsin_44_8_985.06128_4.29
\n
"
,
"EQFTFDAK
\n
"
,
">A0A2C9KB11/1535-1643_7_Trypsin_51_7_803.82708_4.04
\n
"
,
"QSDADLR
\n
"
,
">A0A2C9KB11/1535-1643_8_Trypsin_52_1_174.20278_9.71
\n
"
,
"R
\n
"
,
">A0A2C9KB11/1535-1643_9_Trypsin_58_6_732.83448_5.87
\n
"
,
"DPNFLK
\n
"
,
">A0A2C9KB11/1535-1643_10_Trypsin_79_21_2158.36788_3.75
\n
"
,
"QVNSIVNGLGDMVDSVNDPGK
\n
"
,
">A0A2C9KB11/1535-1643_11_Trypsin_86_7_842.95038_6.23
\n
"
,
"LQANLER
\n
"
,
">A0A2C9KB11/1535-1643_12_Trypsin_108_22_2521.94168_5.57
\n
"
,
"LSEIHLHFVPSVGPEFFVPLEK
\n
"
,
">A0A2C9K1A5/128-239_0_Trypsin_3_3_374.43738_5.87
\n
"
,
"DIK
\n
"
,
">A0A2C9K1A5/128-239_1_Trypsin_11_8_919.98958_5.87
\n
"
,
"ALDSSWNK
\n
"
,
">A0A2C9K1A5/128-239_2_Trypsin_19_8_759.81728_5.98
\n
"
,
"LTAGADGR
\n
"
,
">A0A2C9K1A5/128-239_3_Trypsin_37_18_2120.51518_9.71
\n
"
,
"TTFGNNLVLWMLNVPNMR
\n
"
,
">A0A2C9K1A5/128-239_4_Trypsin_39_2_303.31828_6.23
\n
"
,
"ER
\n
"
,
">A0A2C9K1A5/128-239_5_Trypsin_42_3_392.49858_8.06
\n
"
,
"FVK
\n
"
,
">A0A2C9K1A5/128-239_6_Trypsin_53_11_1259.34088_5.53
\n
"
,
"FNAHQSDEALK
\n
"
,
">A0A2C9K1A5/128-239_7_Trypsin_60_7_835.91208_4.29
\n
"
,
"NDAEFIK
\n
"
,
">A0A2C9K1A5/128-239_8_Trypsin_63_3_373.45268_8.06
\n
"
,
"QVK
\n
"
,
">A0A2C9K1A5/128-239_9_Trypsin_111_48_5318.17868_6.16
\n
"
,
"LIVGGLQTLIINLNNPGQLQASIEHLADVHLHMKPSIGLEYFKPLQEN
\n
"
,
">A0A2C9K1A5/285-395_0_Trypsin_2_2_261.27798_5.87
\n
"
,
"DK
\n
"
,
">A0A2C9K1A5/285-395_1_Trypsin_11_9_1034.13688_6.23
\n
"
,
"VALESSWSR
\n
"
,
">A0A2C9K1A5/285-395_2_Trypsin_19_8_758.87288_8.06
\n
"
,
"LTAGVNGK
\n
"
,
">A0A2C9K1A5/285-395_3_Trypsin_20_1_174.20278_9.71
\n
"
,
"R
\n
"
,
">A0A2C9K1A5/285-395_4_Trypsin_25_5_515.56988_9.71
\n
"
,
"NAGVR
\n
"
,
">A0A2C9K1A5/285-395_5_Trypsin_37_12_1520.87088_5.98
\n
"
,
"LVLWMFNVPDMR
\n
"
,
">A0A2C9K1A5/285-395_6_Trypsin_39_2_303.31828_6.23
\n
"
,
"ER
\n
"
,
">A0A2C9K1A5/285-395_7_Trypsin_42_3_422.48448_9.71
\n
"
,
"FTR
\n
"
,
">A0A2C9K1A5/285-395_8_Trypsin_46_4_478.54858_8.06
\n
"
,
"FNAK
\n
"
,
">A0A2C9K1A5/285-395_9_Trypsin_53_7_789.84058_4.29
\n
"
,
"QSDEALK
\n
"
,
">A0A2C9K1A5/285-395_10_Trypsin_60_7_822.91338_4.29
\n
"
,
"TDAEFLK
\n
"
,
">A0A2C9K1A5/285-395_11_Trypsin_85_25_2798.14518_3.68
\n
"
,
"QVDVIIGGFETLINNLNDPTLLQDR
\n
"
,
">A0A2C9K1A5/285-395_12_Trypsin_96_11_1225.36408_4.66
\n
"
,
"LESLADAHLEK
\n
"
,
">A0A2C9K1A5/285-395_13_Trypsin_110_14_1504.79238_8.32
\n
"
,
"KPAIGVSYFGPLQK
\n
"
,
">A0A2C9K1A5/588-698_0_Trypsin_2_2_261.27798_5.87
\n
"
,
"DK
\n
"
,
">A0A2C9K1A5/588-698_1_Trypsin_3_1_146.18938_8.06
\n
"
,
"K
\n
"
,
">A0A2C9K1A5/588-698_2_Trypsin_25_22_2285.50118_8.06
\n
"
,
"ALQSSWNTLVNQAGGQQNAGIK
\n
"
,
">A0A2C9K1A5/588-698_3_Trypsin_37_12_1519.88608_9.71
\n
"
,
"LVLWMFNVPNMR
\n
"
,
">A0A2C9K1A5/588-698_4_Trypsin_39_2_289.29138_5.98
\n
"
,
"DR
\n
"
,
">A0A2C9K1A5/588-698_5_Trypsin_42_3_380.44418_8.06
\n
"
,
"FSK
\n
"
,
">A0A2C9K1A5/588-698_6_Trypsin_53_11_1204.26148_5.37
\n
"
,
"FNAHSSDDALK
\n
"
,
">A0A2C9K1A5/588-698_7_Trypsin_60_7_792.88708_4.29
\n
"
,
"ADAEFLK
\n
"
,
">A0A2C9K1A5/588-698_8_Trypsin_81_21_2198.41478_3.68
\n
"
,
"QVNVIVGGLESLVNNVDDADK
\n
"
,
">A0A2C9K1A5/588-698_9_Trypsin_88_7_771.87168_6.23
\n
"
,
"LQAGVER
\n
"
,
">A0A2C9K1A5/588-698_10_Trypsin_110_22_2438.78338_5.38
\n
"
,
"LVDAHLHMSPSVGLEYFGPLQQ
\n
"
,
">A0A2C9K1A5/745-855_0_Trypsin_2_2_289.29138_5.98
\n
"
,
"DR
\n
"
,
">A0A2C9K1A5/745-855_1_Trypsin_3_1_146.18938_8.06
\n
"
,
"K
\n
"
,
">A0A2C9K1A5/745-855_2_Trypsin_7_4_515.61028_6.23
\n
"
,
"VLER
\n
"
,
">A0A2C9K1A5/745-855_3_Trypsin_19_12_1257.41158_8.06
\n
"
,
"TWNQLISGPGGK
\n
"
,
">A0A2C9K1A5/745-855_4_Trypsin_21_2_275.30488_6.13
\n
"
,
"EK
\n
"
,
">A0A2C9K1A5/745-855_5_Trypsin_25_4_387.47948_8.06
\n
"
,
"AGIK
\n
"
,
">A0A2C9K1A5/745-855_6_Trypsin_38_13_1649.00158_6.23
\n
"
,
"LVLWMFENVPNMR
\n
"
,
">A0A2C9K1A5/745-855_7_Trypsin_43_5_623.66348_5.87
\n
"
,
"DQFSK
\n
"
,
">A0A2C9K1A5/745-855_8_Trypsin_48_5_616.67448_7.08
\n
"
,
"FDAHK
\n
"
,
">A0A2C9K1A5/745-855_9_Trypsin_60_12_1349.50358_4.67
\n
"
,
"SDEALSKPEFVK
\n
"
,
">A0A2C9K1A5/745-855_10_Trypsin_96_36_3961.35988_4.38
\n
"
,
"QVNNIFGGLESILNNLNKPGQLQSALENLADDHLDR
\n
"
,
">A0A2C9K1A5/745-855_11_Trypsin_99_3_399.49358_9.93
\n
"
,
"KPR
\n
"
,
">A0A2C9K1A5/745-855_12_Trypsin_110_11_1248.48748_6.13
\n
"
,
"IGLEFFGPLQK
\n
"
,
">A0A2C9K1A5/935-1004_0_Trypsin_10_10_1288.50498_7.2
\n
"
,
"QMFEHVPNMR
\n
"
,
">A0A2C9K1A5/935-1004_1_Trypsin_15_5_651.71728_6.13
\n
"
,
"EQFTK
\n
"
,
">A0A2C9K1A5/935-1004_2_Trypsin_26_11_1211.34268_7.08
\n
"
,
"FDAHQPNAALK
\n
"
,
">A0A2C9K1A5/935-1004_3_Trypsin_37_11_1258.39948_6.23
\n
"
,
"QNPEFLAQVGR
\n
"
,
">A0A2C9K1A5/935-1004_4_Trypsin_55_18_1881.15618_3.89
\n
"
,
"ILGGIESLLNNDDPVALK
\n
"
,
">A0A2C9K1A5/935-1004_5_Trypsin_60_5_544.60838_5.98
\n
"
,
"AAIDR
\n
"
,
">A0A2C9K1A5/935-1004_6_Trypsin_69_9_944.07038_5.22
\n
"
,
"LADAHLSMS
\n
"
]
@
pytest
.
fixture
def
truth_ipc
():
""" Solution """
return
[
">A0A2C9KB11/1065-1162_0_Trypsin_2_2_289.29138_6.73
\n
"
,
"DR
\n
"
,
...
...
@@ -302,6 +516,40 @@ def list_enz():
@
pytest
.
fixture
def
res_dig_1_42
():
""" Result for digestion with 1 and 42 and IPC2 """
return
">Input_0_Arg-C_2_2_289.29138_5.98
\n
"
\
"DR
\n
"
\
">Input_1_Arg-C_13_11_1332.52228_7.79
\n
"
\
"EALDSSWKKLR
\n
"
\
">Input_2_Arg-C_19_6_503.51548_9.71
\n
"
\
"SGAGGR
\n
"
\
">Input_3_Arg-C_25_6_657.77078_9.93
\n
"
\
"KNAGIR
\n
"
\
">Input_4_Arg-C_44_19_2283.62998_4.3
\n
"
\
"LVLWMLDFDAHQPDSVLQR
\n
"
\
">Input_5_Arg-C_47_3_407.46678_3.74
\n
"
\
"EFL
\n
"
\
">Input_0_Trypsin_2_2_289.29138_5.98
\n
"
\
"DR
\n
"
\
">Input_1_Trypsin_10_8_935.00128_4.29
\n
"
\
"EALDSSWK
\n
"
\
">Input_2_Trypsin_11_1_146.18938_8.06
\n
"
\
"K
\n
"
\
">Input_3_Trypsin_13_2_287.36218_9.71
\n
"
\
"LR
\n
"
\
">Input_4_Trypsin_19_6_503.51548_9.71
\n
"
\
"SGAGGR
\n
"
\
">Input_5_Trypsin_20_1_146.18938_8.06
\n
"
\
"K
\n
"
\
">Input_6_Trypsin_25_5_529.59668_9.71
\n
"
\
"NAGIR
\n
"
\
">Input_7_Trypsin_44_19_2283.62998_4.3
\n
"
\
"LVLWMLDFDAHQPDSVLQR
\n
"
\
">Input_8_Trypsin_47_3_407.46678_3.74
\n
"
\
"EFL
\n
"
@
pytest
.
fixture
def
res_dig_1_42_ipc
():
""" Result for digestion with 1 and 42 """
return
">Input_0_Arg-C_2_2_289.29138_6.73
\n
"
\
"DR
\n
"
\
...
...
@@ -424,6 +672,17 @@ def test_s_option(capsys, res_dig_1_42):
captured
=
capsys
.
readouterr
()
assert
res_dig_1_42
in
captured
.
out
def
test_s_option_ipc
(
capsys
,
res_dig_1_42_ipc
):
""" Test -s behavior """
with
unittest
.
mock
.
patch
(
"sys.argv"
,
[
"func_test"
,
"-s"
,
"DREALDSSWKKLRSgagGRKNAGI"
\
"RLVLWMLDFDAHQPDSVLQREFL"
,
"-e"
,
"1"
,
"42"
,
"-p"
,
"ipc"
]):
RapidPeptidesGenerator
.
main
()
# Output
captured
=
capsys
.
readouterr
()
assert
res_dig_1_42_ipc
in
captured
.
out
def
test_d_option
(
capsys
):
""" Test -d behavior """
# sequential
...
...
@@ -433,6 +692,40 @@ def test_d_option(capsys):
RapidPeptidesGenerator
.
main
()
# Output
captured
=
capsys
.
readouterr
()
assert
">Input_0_Lys-C_2_2_243.30608_8.06
\n
PK
\n
"
\
">Input_1_Lys-C_4_2_243.30608_8.06
\n
PK
\n
"
\
">Input_2_Lys-C_6_2_243.30608_8.06
\n
PK
\n
"
\
">Input_3_Lys-C_8_2_243.30608_8.06
\n
PK
\n
"
\
">Input_0_Lys-N_1_1_115.13198_5.46
\n
P
\n
"
\
">Input_1_Lys-N_3_2_243.30608_8.06
\n
KP
\n
"
\
">Input_2_Lys-N_5_2_243.30608_8.06
\n
KP
\n
"
\
">Input_3_Lys-N_7_2_243.30608_8.06
\n
KP
\n
"
\
">Input_4_Lys-N_8_1_146.18938_8.06
\n
K
\n
"
in
captured
.
out
# concurrent
with
unittest
.
mock
.
patch
(
"sys.argv"
,
[
"func_test"
,
"-s"
,
"PKPKPKPK"
,
"-e"
,
"28"
,
"29"
,
"-d"
,
"c"
]):
RapidPeptidesGenerator
.
main
()
# Output
captured
=
capsys
.
readouterr
()
assert
">Input_0_Lys-C-Lys-N_1_1_115.13198_5.46
\n
P
\n
"
\
">Input_1_Lys-C-Lys-N_2_1_146.18938_8.06
\n
K
\n
"
\
">Input_2_Lys-C-Lys-N_3_1_115.13198_5.46
\n
P
\n
"
\
">Input_3_Lys-C-Lys-N_4_1_146.18938_8.06
\n
K
\n
"
\
">Input_4_Lys-C-Lys-N_5_1_115.13198_5.46
\n
P
\n
"
\
">Input_5_Lys-C-Lys-N_6_1_146.18938_8.06
\n
K
\n
"
\
">Input_6_Lys-C-Lys-N_7_1_115.13198_5.46
\n
P
\n
"
\
">Input_7_Lys-C-Lys-N_8_1_146.18938_8.06
\n
K
\n
"
in
captured
.
out
def
test_d_option_ipc
(
capsys
):
""" Test -d behavior """
# sequential
with
unittest
.
mock
.
patch
(
"sys.argv"
,
[
"func_test"
,
"-s"
,
"PKPKPKPK"
,
"-p"
,
"ipc"
,
"-e"
,
"28"
,
"29"
,
"-d"
,
"s"
]):
RapidPeptidesGenerator
.
main
()
# Output
captured
=
capsys
.
readouterr
()
assert
"Input_0_Lys-C_2_2_243.30608_10.04
\n
PK
\n
"
\
">Input_1_Lys-C_4_2_243.30608_10.04
\n
PK
\n
"
\
">Input_2_Lys-C_6_2_243.30608_10.04
\n
PK
\n
"
\
...
...
@@ -444,7 +737,7 @@ def test_d_option(capsys):
">Input_4_Lys-N_8_1_146.18938_10.04
\n
K
\n
"
in
captured
.
out
# concurrent
with
unittest
.
mock
.
patch
(
"sys.argv"
,
[
"func_test"
,
"-s"
,
"PKPKPKPK"
,
"-s"
,
"PKPKPKPK"
,
"-p"
,
"ipc"
,
"-e"
,
"28"
,
"29"
,
"-d"
,
"c"
]):
RapidPeptidesGenerator
.
main
()
# Output
...
...
@@ -463,19 +756,19 @@ def test_p_option(capsys):
# default
with
unittest
.
mock
.
patch
(
"sys.argv"
,
[
"func_test"
,
"-s"
,
"PKPKPKPK"
,
"-e"
,
"28"
,
"29"
,
"-p"
,
"ipc"
]):
"-e"
,
"28"
,
"29"
,
"-p"
,
"ipc
2
"
]):
RapidPeptidesGenerator
.
main
()
# Output
captured
=
capsys
.
readouterr
()
assert
"Input_0_Lys-C_2_2_243.30608_
10
.0
4
\n
PK
\n
"
\
">Input_1_Lys-C_4_2_243.30608_
10
.0
4
\n
PK
\n
"
\
">Input_2_Lys-C_6_2_243.30608_
10
.0
4
\n
PK
\n
"
\
">Input_3_Lys-C_8_2_243.30608_
10
.0
4
\n
PK
\n
"
\
">Input_0_Lys-N_1_1_115.13198_5.
97
\n
P
\n
"
\
">Input_1_Lys-N_3_2_243.30608_
10
.0
4
\n
KP
\n
"
\
">Input_2_Lys-N_5_2_243.30608_
10
.0
4
\n
KP
\n
"
\
">Input_3_Lys-N_7_2_243.30608_
10
.0
4
\n
KP
\n
"
\
">Input_4_Lys-N_8_1_146.18938_
10
.0
4
\n
K
\n
"
in
captured
.
out
assert
"
>
Input_0_Lys-C_2_2_243.30608_
8
.0
6
\n
PK
\n
"
\
">Input_1_Lys-C_4_2_243.30608_
8
.0
6
\n
PK
\n
"
\
">Input_2_Lys-C_6_2_243.30608_
8
.0
6
\n
PK
\n
"
\
">Input_3_Lys-C_8_2_243.30608_
8
.0
6
\n
PK
\n
"
\
">Input_0_Lys-N_1_1_115.13198_5.
46
\n
P
\n
"
\
">Input_1_Lys-N_3_2_243.30608_
8
.0
6
\n
KP
\n
"
\
">Input_2_Lys-N_5_2_243.30608_
8
.0
6
\n
KP
\n
"
\
">Input_3_Lys-N_7_2_243.30608_
8
.0
6
\n
KP
\n
"
\
">Input_4_Lys-N_8_1_146.18938_
8
.0
6
\n
K
\n
"
in
captured
.
out
# stryer
with
unittest
.
mock
.
patch
(
"sys.argv"
,
[
"func_test"
,
...
...
@@ -494,6 +787,23 @@ def test_p_option(capsys):
">Input_3_Lys-N_7_2_243.30608_9.4
\n
KP
\n
"
\
">Input_4_Lys-N_8_1_146.18938_9.4
\n
K
\n
"
in
captured
.
out
# ipc
with
unittest
.
mock
.
patch
(
"sys.argv"
,
[
"func_test"
,
"-s"
,
"PKPKPKPK"
,
"-e"
,
"28"
,
"29"
,
"-p"
,
"ipc"
]):
RapidPeptidesGenerator
.
main
()
# Output
captured
=
capsys
.
readouterr
()
assert
">Input_0_Lys-C_2_2_243.30608_10.04
\n
PK
\n
"
\
">Input_1_Lys-C_4_2_243.30608_10.04
\n
PK
\n
"
\
">Input_2_Lys-C_6_2_243.30608_10.04
\n
PK
\n
"
\
">Input_3_Lys-C_8_2_243.30608_10.04
\n
PK
\n
"
\
">Input_0_Lys-N_1_1_115.13198_5.97
\n
P
\n
"
\
">Input_1_Lys-N_3_2_243.30608_10.04
\n
KP
\n
"
\
">Input_2_Lys-N_5_2_243.30608_10.04
\n
KP
\n
"
\
">Input_3_Lys-N_7_2_243.30608_10.04
\n
KP
\n
"
\
">Input_4_Lys-N_8_1_146.18938_10.04
\n
K
\n
"
in
captured
.
out
def
test_f_option
(
capsys
):
""" Test -f behavior """
# default
...
...
@@ -503,6 +813,63 @@ def test_f_option(capsys):
RapidPeptidesGenerator
.
main
()
# Output
captured
=
capsys
.
readouterr
()
assert
">Input_0_Lys-C_2_2_243.30608_8.06
\n
PK
\n
"
\
">Input_1_Lys-C_4_2_243.30608_8.06
\n
PK
\n
"
\
">Input_2_Lys-C_6_2_243.30608_8.06
\n
PK
\n
"
\
">Input_3_Lys-C_8_2_243.30608_8.06
\n
PK
\n
"
\
">Input_0_Lys-N_1_1_115.13198_5.46
\n
P
\n
"
\
">Input_1_Lys-N_3_2_243.30608_8.06
\n
KP
\n
"
\
">Input_2_Lys-N_5_2_243.30608_8.06
\n
KP
\n
"
\
">Input_3_Lys-N_7_2_243.30608_8.06
\n
KP
\n
"
\
">Input_4_Lys-N_8_1_146.18938_8.06
\n
K
\n
"
in
captured
.
out
# csv
with
unittest
.
mock
.
patch
(
"sys.argv"
,
[
"func_test"
,
"-s"
,
"PKPKPKPK"
,
"-e"
,
"28"
,
"29"
,
"-f"
,
"csv"
]):
RapidPeptidesGenerator
.
main
()
# Output
captured
=
capsys
.
readouterr
()
assert
"Original_header,No_peptide,Enzyme,Cleaving_pos,Peptide_size,"
\
"Peptide_mass,pI,Sequence
\n
"
\
"Input,0,Lys-C,2,2,243.30608,8.06,PK
\n
"
\
"Input,1,Lys-C,4,2,243.30608,8.06,PK
\n
"
\
"Input,2,Lys-C,6,2,243.30608,8.06,PK
\n
"
\
"Input,3,Lys-C,8,2,243.30608,8.06,PK
\n
"
\
"Input,0,Lys-N,1,1,115.13198,5.46,P
\n
"
\
"Input,1,Lys-N,3,2,243.30608,8.06,KP
\n
"
\
"Input,2,Lys-N,5,2,243.30608,8.06,KP
\n
"
\
"Input,3,Lys-N,7,2,243.30608,8.06,KP
\n
"
\
"Input,4,Lys-N,8,1,146.18938,8.06,K
\n
"
in
captured
.
out
# tsv
with
unittest
.
mock
.
patch
(
"sys.argv"
,
[
"func_test"
,
"-s"
,
"PKPKPKPK"
,
"-e"
,
"28"
,
"29"
,
"-f"
,
"tsv"
]):
RapidPeptidesGenerator
.
main
()
# Output
captured
=
capsys
.
readouterr
()
assert
"Original_header
\t
No_peptide
\t
Enzyme
\t
Cleaving_pos
\t
Peptide_size
\t
"
\
"Peptide_mass
\t
pI
\t
Sequence
\n
"
\
"Input
\t
0
\t
Lys-C
\t
2
\t
2
\t
243.30608
\t
8.06
\t
PK
\n
"
\
"Input
\t
1
\t
Lys-C
\t
4
\t
2
\t
243.30608
\t
8.06
\t
PK
\n
"
\
"Input
\t
2
\t
Lys-C
\t
6
\t
2
\t
243.30608
\t
8.06
\t
PK
\n
"
\
"Input
\t
3
\t
Lys-C
\t
8
\t
2
\t
243.30608
\t
8.06
\t
PK
\n
"
\
"Input
\t
0
\t
Lys-N
\t
1
\t
1
\t
115.13198
\t
5.46
\t
P
\n
"
\
"Input
\t
1
\t
Lys-N
\t
3
\t
2
\t
243.30608
\t
8.06
\t
KP
\n
"
\
"Input
\t
2
\t
Lys-N
\t
5
\t
2
\t
243.30608
\t
8.06
\t
KP
\n
"
\
"Input
\t
3
\t
Lys-N
\t
7
\t
2
\t
243.30608
\t
8.06
\t
KP
\n
"
\
"Input
\t
4
\t
Lys-N
\t
8
\t
1
\t
146.18938
\t
8.06
\t
K
\n
"
in
captured
.
out
def
test_f_option_ipc
(
capsys
):
""" Test -f behavior """
# default
with
unittest
.
mock
.
patch
(
"sys.argv"
,
[
"func_test"
,
"-s"
,
"PKPKPKPK"
,
"-p"
,
"ipc"
,
"-e"
,
"28"
,
"29"
,
"-f"
,
"fasta"
]):
RapidPeptidesGenerator
.
main
()
# Output
captured
=
capsys
.
readouterr
()
assert
"Input_0_Lys-C_2_2_243.30608_10.04
\n
PK
\n
"
\
">Input_1_Lys-C_4_2_243.30608_10.04
\n
PK
\n
"
\
">Input_2_Lys-C_6_2_243.30608_10.04
\n
PK
\n
"
\
...
...
@@ -515,7 +882,7 @@ def test_f_option(capsys):
# csv
with
unittest
.
mock
.
patch
(
"sys.argv"
,
[
"func_test"
,
"-s"
,
"PKPKPKPK"
,
"-s"
,
"PKPKPKPK"
,
"-p"
,
"ipc"
,
"-e"
,
"28"
,
"29"
,
"-f"
,
"csv"
]):
RapidPeptidesGenerator
.
main
()
# Output
...
...
@@ -534,7 +901,7 @@ def test_f_option(capsys):
# tsv
with
unittest
.
mock
.
patch
(
"sys.argv"
,
[
"func_test"
,
"-s"
,
"PKPKPKPK"
,
"-s"
,
"PKPKPKPK"
,
"-p"
,
"ipc"
,
"-e"
,
"28"
,
"29"
,
"-f"
,
"tsv"
]):
RapidPeptidesGenerator
.
main
()
# Output
...
...
@@ -564,6 +931,19 @@ def test_i_option(capsys, truth, file_a):
for
i
in
truth
:
assert
i
in
captured
.
out
def
test_i_option_ipc
(
capsys
,
truth_ipc
,
file_a
):
""" Test the functional behavior of FRAG of i option """
# Test -i behavior with fasta file
with
unittest
.
mock
.
patch
(
"sys.argv"
,
[
"func_test"
,
"-i"
,
str
(
file_a
),
"-e"
,
"42"
,
"-p"
,
"ipc"
]):
RapidPeptidesGenerator
.
main
()
# Output
captured
=
capsys
.
readouterr
()
# Check result
for
i
in
truth_ipc
:
assert
i
in
captured
.
out
def
test_i_option_parallel
(
capsys
,
truth
,
file_a
):
""" Test the functional behavior of FRAG of i option """
# Test -i behavior with fasta file
...
...
@@ -578,6 +958,20 @@ def test_i_option_parallel(capsys, truth, file_a):
for
i
in
truth
:
assert
i
in
captured
.
out
def
test_i_option_parallel_ipc
(
capsys
,
truth_ipc
,
file_a
):
""" Test the functional behavior of FRAG of i option """
# Test -i behavior with fasta file
with
unittest
.
mock
.
patch
(
"sys.argv"
,
[
"func_test"
,
"-i"
,
str
(
file_a
),
"-e"
,
"42"
,
"-c"
,
"8"
,
"-p"
,
"ipc"
]):
RapidPeptidesGenerator
.
main
()
# Output
captured
=
capsys
.
readouterr
()
# Check result
for
i
in
truth_ipc
:
assert
i
in
captured
.
out
def
test_o_option
(
tmpdir
,
truth
,
file_a
):
""" Test the functional behavior of FRAG of o (and q) option """
# Output folder
...
...
@@ -599,6 +993,27 @@ def test_o_option(tmpdir, truth, file_a):
assert
line
in
truth
assert
nb_line
==
len
(
truth
)
def
test_o_option_ipc
(
tmpdir
,
truth_ipc
,
file_a
):
""" Test the functional behavior of FRAG of o (and q) option """
# Output folder
output_folder
=
tmpdir
.
mkdir
(
"res_functional_tests"
)
# Test -o behavior with fasta file
with
unittest
.
mock
.
patch
(
"sys.argv"
,
[
"func_test"
,
"-i"
,
str
(
file_a
),
"-e"
,
"42"
,
"-q"
,
"-p"
,
"ipc"
,
"-o"
,
os
.
path
.
join
(
output_folder
,
"res.fa"
)]):
RapidPeptidesGenerator
.
main
()
# Check result
nb_line
=
0
with
open
(
os
.
path
.
join
(
output_folder
,
"res.fa"
))
as
file_res
:
for
line
in
file_res
:
nb_line
+=
1
assert
line
in
truth_ipc
assert
nb_line
==
len
(
truth_ipc
)
def
test_no_enz
(
capsys
,
monkeypatch
,
list_enz
,
res_dig_1_42
):
""" Test -l behavior """
responses
=
iter
([
"1 42"
,
""
])
...
...
@@ -612,6 +1027,19 @@ def test_no_enz(capsys, monkeypatch, list_enz, res_dig_1_42):
assert
list_enz
in
captured
.
out
assert
res_dig_1_42
in
captured
.
out
def
test_no_enz_ipc
(
capsys
,
monkeypatch
,
list_enz
,
res_dig_1_42_ipc
):
""" Test -l behavior """
responses
=
iter
([
"1 42"
,
""
])
with
unittest
.
mock
.
patch
(
"sys.argv"
,
[
"func_test"
,
"-p"
,
"ipc"
,
"-s"
,
"DREALDSSWKKLRSgagGRKNAGI"
\
"RLVLWMLDFDAHQPDSVLQREFL"
]):
monkeypatch
.
setattr
(
'builtins.input'
,
lambda
msg
:
next
(
responses
))
RapidPeptidesGenerator
.
main
()
# Output
captured
=
capsys
.
readouterr
()
assert
list_enz
in
captured
.
out
assert
res_dig_1_42_ipc
in
captured
.
out
def
test_no_enz_quit
(
capsys
,
monkeypatch
,
list_enz
):
""" Test -l behavior """
responses
=
iter
([
"q"
])
...
...
@@ -640,3 +1068,18 @@ def test_no_enz_err(capsys, monkeypatch, list_enz, res_dig_1_42):