From 3e653f2d0fcb5669c4f8fd9afc0767769c6a13ef Mon Sep 17 00:00:00 2001
From: Fabien Mareuil <fmareuil@pasteur.fr>
Date: Thu, 12 Apr 2018 17:01:14 +0200
Subject: [PATCH] bug fix: interface residues

Former-commit-id: 55c5ce841a8458bf63227d647eb309626cd2a4c0
---
 ...nterface_residues_ppc_dimer_IN_PROGRESS.py | 318 -----------------
 pyScripts/get_pdb_structure.py                |  80 -----
 pyScripts/get_ppc_V2.py                       | 171 ---------
 pyScripts/get_ppc_id_from_pdbe.py             | 121 -------
 pyScripts/get_ppc_ligand_V2.py                | 268 --------------
 .../get_ppc_ligand_compound_from_pdbe.py      | 131 -------
 .../get_ppc_protcomp-ion_ppc_from_pdbe.py     | 321 -----------------
 pyScripts/iPPI-DB_descriptors_V2.py           | 320 -----------------
 pyScripts/ion.pdf                             | Bin 121203 -> 0 bytes
 pyScripts/ion.txt                             |  63 ----
 pyScripts/ppiinterface_dist.py                | 335 ------------------
 11 files changed, 2128 deletions(-)
 delete mode 100644 pyScripts/get_interface_residues_ppc_dimer_IN_PROGRESS.py
 delete mode 100644 pyScripts/get_pdb_structure.py
 delete mode 100644 pyScripts/get_ppc_V2.py
 delete mode 100644 pyScripts/get_ppc_id_from_pdbe.py
 delete mode 100644 pyScripts/get_ppc_ligand_V2.py
 delete mode 100644 pyScripts/get_ppc_ligand_compound_from_pdbe.py
 delete mode 100644 pyScripts/get_ppc_protcomp-ion_ppc_from_pdbe.py
 delete mode 100644 pyScripts/iPPI-DB_descriptors_V2.py
 delete mode 100644 pyScripts/ion.pdf
 delete mode 100644 pyScripts/ion.txt
 delete mode 100644 pyScripts/ppiinterface_dist.py

diff --git a/pyScripts/get_interface_residues_ppc_dimer_IN_PROGRESS.py b/pyScripts/get_interface_residues_ppc_dimer_IN_PROGRESS.py
deleted file mode 100644
index 1f5e103b..00000000
--- a/pyScripts/get_interface_residues_ppc_dimer_IN_PROGRESS.py
+++ /dev/null
@@ -1,318 +0,0 @@
-# -*- coding: utf-8 -*-
-
-"""
-Author: Alexandra Moine-Franel
-Date: April 2018
-Version: 2
-
-
-
-1) IDENTIFY PROTEIN/PROTEIN INTERFACE RESIDUES
-
-2) SAVE EACH PROTEIN FIRST CHAIN IN SEPARATE FILE (after cleaning)
-    - Number of models
-    - Alternative atomic locations
-    - Heteroatoms
-
-
-
-
-Usage:    [Script.py] [PROTEIN/PROTEIN COMPLEX] -d (DISTANCE)
--------------------------------------------------------------------------------
-
-Arguments:
-------------
-[PROTEIN/PROTEIN COMPLEX]:
-    Input (.pdb format)
-    Protein/protein complex
-
-(DISTANCE)- optionnal
-    Input (float or integer)
-    Distance threshold between the target and the partner
-    (6 angstroms - by defaut)
-
-
-Return:
-------------
-[PROTEIN/PROTEIN INTERFACE RESIDUES]: 
-    Output (.txt format) "PDB_Chain1-Chain2_distance.txt"
-    (chain ID, residue name and residue ID included)
-
-[PROTEIN CHAIN]: 
-    Output (.pdb format) "PDB_Chain1.pdb"
-    (heteroatom not included)
-"""
-
-# =============================================================================
-
-import os
-import sys
-import argparse
-import logging
-import time
-
-from Bio.PDB import Select, PDBIO
-from Bio.PDB.PDBParser import PDBParser
-from argparse import RawTextHelpFormatter
-import itertools
-
-# =============================================================================
-
-LOG = logging.getLogger("IDENTIFY PROTEIN/PROTEIN INTERFACE RESIDUES")
-
-MODEL_FILENAME = 'pdb_multiple_models'
-ALTLOC_FILENAME = 'pdb_altloc'
-NODIMER_FILENAME = 'pdb_not_dimer'
-
-# =============================================================================
-
-def main(pdb, distance):
-    start = time.time()
-
-    pdb_code = pdb.strip().split('.pdb')[:-1]
-    structure = PDBParser().get_structure(pdb_code, pdb)
-    model = structure[0]
-
-    # Check if multiple models available
-    if len(list(structure.get_models())) != 0:
-        try:
-            if not os.path.exists('{}.txt'.format(MODEL_FILENAME)):
-                with open('{}.txt'.format(MODEL_FILENAME), 'w') as outfile:
-                    outfile.write(pdb_code)
-            else:
-                with open('{}.txt'.format(MODEL_FILENAME), 'a') as outfile:
-                    outfile.write(str(pdb_code) + '\n')
-        except IOError as e:
-            LOG.error('{}'.format(e))
-            sys.exit(1)
-            
-    # Check if 3D structure contains alternative atomic locations
-    if get_altloc(model) != 0: 
-        try:
-            if not os.path.exists('{}.txt'.format(ALTLOC_FILENAME)):
-                with open('{}.txt'.format(ALTLOC_FILENAME), 'w') as outfile:
-                    outfile.write(str(pdb_code) + '\n')
-            else:
-                with open('{}.txt'.format(ALTLOC_FILENAME), 'a') as outfile:
-                    outfile.write(str(pdb_code) + '\n')
-        except IOError as e:
-            LOG.error('{}'.format(e))
-            sys.exit(1)    
-    else:
-
-        # Get the first copy of each chain
-        target_partner_chain = select_first_chain(get_protein_assembly(structure))
-        print(target_partner_chain)
-
-        # Check if 3D structure contains more than two molecule IDs
-        if len(target_partner_chain) > 2:
-            try:
-                if not os.path.exists('{}.txt'.format(NODIMER_FILENAME)):
-                    with open('{}.txt'.format(NODIMER_FILENAME), 'w') as outfile:
-                        outfile.write(pdb_code)
-                else:
-                    with open('{}.txt'.format(NODIMER_FILENAME), 'a') as outfile:
-                        outfile.write(str(pdb_code) + '\n')
-            except IOError as e:
-                LOG.error('{}'.format(e))
-                sys.exit(1)
-
-        
-        # Remove heteroatom (protein/protein complex, no ligand)
-        for chain in target_partner_chain:
-            residue_to_remove = remove_hetatm(model, chain)
-            for residue in residue_to_remove:
-                model[chain].detach_child(residue[1])
-
-
-        # Get all chain-chain combinations
-        subset = permutation(target_partner_chain)
-
-
-        # Calculate chain-chain distance (interaction patch)
-        for chain_pair in subset:
-            target = chain_pair[0]
-            partner = chain_pair[1]    
-
-            if len(model[target].get_list()) > 3 and len(model[partner].get_list()) > 3:
-            
-                get_interface_residues(target, partner, model, distance)
-
-
-        # Save each chain in different file
-        #for chain in target_partner_chain:
-        io = PDBIO()
-        io.set_structure(model)
-        io.save('{}_{}.pdb'.format(pdb_code, chain), select = ChainSelection(target_partner_chain),
-                    preserve_atom_numbering = True)
-
-            
-            
-        end = time.time()
-        print('TIME: {}'.format(end - start))
-
-
-class ChainSelection(Select):
-    def __init__(self, chains):
-        self.chains = chains
-
-    def accept_chain(self, chain):
-        if chain.get_id() in self.chains:
-            return 1
-        else:
-            return 0
-
-
-def get_altloc(model):
-    altloc = 0
-    for chain in model.child_list:
-        for residue in chain.get_list():
-            if residue.is_disordered():
-                altloc = altloc + 1
-                break
-    return altloc
-
-
-def get_protein_assembly(structure):
-    assembly = {}
-    for molecule in structure.header['compound'].keys():
-        assembly[molecule] = []
-        for chain in structure.header['compound'][molecule]['chain'].split(','):
-            assembly[molecule].append(chain.strip().upper())
-    return assembly
-    # {'1': ['A', 'C', 'E'], '2': ['B', 'D']}
-
-
-def select_first_chain(assembly):
-    chain_id = []
-    for molecule in assembly.keys():
-        chain_id.append(assembly[molecule][0])
-    return chain_id
-    # ['A', 'B']
-
-
-def permutation(list_id):
-    subset = []
-    for permutation in itertools.permutations(list_id, 2):
-        subset.append(permutation)
-    print(subset)
-    return subset
-    # [(['A'], ['B']), (['B'], ['A'])]
-
-
-def remove_hetatm(model, chain):
-    residue_to_remove = []
-    for residue in model[chain].get_residues():
-        if residue.id[0] != ' ': 
-            residue_to_remove.append((model[chain].id, residue.id))
-    return residue_to_remove
-
-
-
-def get_interface_residues(target, partner, model, distance):
-    ires = []
-    with open('{}_{}{}_{}.txt'.format(model.parent.id, target, partner, distance), 'wb') as outfile:
- 
-            for rest in model[target].get_residues():
-                if ''.join(map(str,(rest.get_parent().get_id(), '.',
-                rest.get_resname(), rest.get_id()[1]))):
-                    for atomt in rest.get_atoms():
-                        
-                        for atomp in model[partner].get_atoms():
-                            xt = atomt.get_coord()[0]
-                            xp = atomp.get_coord()[0]
-                            dist_x = calculate_euclidist_x(xt, xp) 
-
-                            if dist_x < float(distance):
-                                yt = atomt.get_coord()[1]
-                                yp = atomp.get_coord()[1]
-                                dist_xy = calculate_euclidist_xy(xt, yt, xp, yp)
-
-                                if dist_xy < float(distance):
-                                    zt = atomt.get_coord()[2]
-                                    zp = atomp.get_coord()[2]
-                                    dist_xyz = calculate_euclidist_xyz(xt, yt, zt, xp, yp, zp)
-
-                                    if dist_xyz < float(distance):
-                                        ires.append(''.join(map(str,
-                                                                (rest.get_parent().get_id(), '.',
-                                                                 rest.get_resname(), rest.get_id()[1]))))
-
-    for element in ires:
-            outfile.write(element + '\n')
-
-
-
-def calculate_euclidist_x(x1, x2):
-    """
-    Calculate the distance x between two 1D points
-    ----------------------------------------------------------------------
-    Arguments:
-        [float]: coordinate x of target atom
-                 coordinate x of partnet atom
-    Return:
-        [float]: distance 
-    """
-    dist = ((x1-x2)**2) ** 0.5
-    return dist
-
-
-def calculate_euclidist_xy(x1, y1, x2, y2):
-    """
-    Calculate the distance xy between two 2D points
-    ----------------------------------------------------------------------
-    Arguments:
-        [float]: coordinates xy of target atom
-                 coordinates xy of partnet atom
-    Return:
-        [float]: distance 
-    """
-    dist = ((x1-x2)**2 + (y1-y2)**2) ** 0.5    
-    return dist
-
-    
-def calculate_euclidist_xyz(x1, y1, z1, x2, y2, z2):
-    """
-    Calculate the euclidian distance xyz between two 3D points
-    ----------------------------------------------------------------------
-    Arguments:
-        [float]: coordinates xyz of target atom
-                 coordinates xyz of partnet atom
-    Return:
-        [float]: distance 
-    """
-    dist = ((x1-x2)**2 + (y1-y2)**2 + (z1-z2)**2) ** 0.5
-    return dist
-
-
-
-def setlogger():
-    LOG.setLevel(logging.INFO)
-    ch = logging.StreamHandler()
-    ch.setLevel(logging.INFO)
-    formatter = logging.Formatter('%(asctime)s - %(name)s - %(funcName)s - %(levelname)s - %(message)s')
-    ch.setFormatter(formatter)
-    LOG.addHandler(ch)
-
-# =============================================================================
-
-if __name__ == '__main__':
-    parser = argparse.ArgumentParser(description = '''
-    1) Format protein/protein complex PDB structure (no ligand)
-        1.a) Number of models
-        1.b) Alternative atomic locations
-        1.c) Heteroatoms
-    2) Identify protein/protein interface residues 
-       (for combinations of first chain of each protein)
-    3) Save each chain in separate files''', formatter_class=RawTextHelpFormatter)
-    parser.add_argument('pdb', help = '''Input [.pdb file]: PBD 3D structure
-    (with HEADER included)''')
-    parser.add_argument('-d', dest = 'distance', help = '''Input [float or integer]: distance threshold
-    {by default, 6 Angstroms}''')
-    options = parser.parse_args()
-    
-    if options.distance is None:
-        options.distance = 6.0
-                
-    setlogger()
-    main(options.file, options.distance)
diff --git a/pyScripts/get_pdb_structure.py b/pyScripts/get_pdb_structure.py
deleted file mode 100644
index d5dd2783..00000000
--- a/pyScripts/get_pdb_structure.py
+++ /dev/null
@@ -1,80 +0,0 @@
-# -*- coding: utf-8 -*-
-
-"""
-Author: Alexandra Moine-Franel
-Date: March 2018
-Version: 1
-
-
-DOWNLOAD PDB 3D STRUCTURE FILES FROM PDB 
-
-
-Usage: [Script.py] [pdb_id]
-------------------------------------------------------------------
-Argument:
-	[file]: list of PDB IDs (txt format)
-
-Return:
-	[file]: PDB files, stored in 'PDB' folder
-"""
-
-# =============================================================================
-
-import os
-import argparse
-import logging
-import csv
-import Bio
-from Bio.PDB import PDBList
-
-# =============================================================================
-
-LOG = logging.getLogger("DOWNLOAD PDB 3D STRUCTURE FILES")
-
-FOLDER = 'PDB'
-
-# =============================================================================
-
-def main(pdb_id):
-	get_pdb_file(get_pdbID(pdb_id))
-	rename_pdb_file()
-
-	
-def get_pdbID(txtfile):
-	pdb_id = []
-	with open(txtfile, 'rb') as pdb_txtfile:
-		for line in csv.reader(pdb_txtfile):	
-			pdb_id.append(line[0].upper())
-	return pdb_id		
-
-
-def get_pdb_file(pdbID):
-	for i in pdbID:
-		PDBList().retrieve_pdb_file(i, pdir = FOLDER, file_format = 'pdb')
-	
-
-def rename_pdb_file():
-	working_dir = os.path.dirname(__file__)
-	pdb_dir = os.path.abspath(os.path.join(working_dir, FOLDER))	
-	os.chdir(pdb_dir)
-	for filename in os.listdir(pdb_dir):
-		os.rename(filename, filename.replace('pdb', '').replace('ent', 'pdb'))
-	
-
-def setlogger():
-    LOG.setLevel(logging.INFO)
-    ch = logging.StreamHandler()
-    ch.setLevel(logging.INFO)
-    formatter = logging.Formatter('%(asctime)s - %(name)s - %(funcName)s - %(levelname)s - %(message)s')
-    ch.setFormatter(formatter)
-    LOG.addHandler(ch)
-
-# =============================================================================
-
-if __name__ == "__main__":
-    parser = argparse.ArgumentParser(description = 
-					'DOWNLOAD PDB 3D STRUCTURE FILES FROM PDB')
-    parser.add_argument('pdb_id', help = 'Input [.txt file]: PDB IDs')
-    options = parser.parse_args()
-    setlogger()
-    main(options.pdb_id)
diff --git a/pyScripts/get_ppc_V2.py b/pyScripts/get_ppc_V2.py
deleted file mode 100644
index 6d801b9c..00000000
--- a/pyScripts/get_ppc_V2.py
+++ /dev/null
@@ -1,171 +0,0 @@
-# -*- coding: utf-8 -*-
-
-"""
-Author: Alexandra Moine-Franel
-Date: March 2018
-Version: 2
-
-
-
-IDENTIFY PROTEIN-PROTEIN COMPLEXES FROM PDBe
-
-
-Usage: [Script.py] [PDBe]
-------------------------------------------------------------------
-Argument:
-	[PDBe]:
-    Input (json format)
-    PDBe (with [assembly_composition] and [assembly_type] information included)
-
-Return:
-	[list(PPC)]:
-    Output (txt format)
-    Protein/protein complex PDB IDs
-	
-	[json(PPC)]:
-	Output (json format)
-	Protein/protein complex information
-	
-	
-Warning:
-------- 
-PDBs with unique and repeated assembly composition annotation are both included!
-[unique annotation: 'protein/protein complex']
-[repeated annotation: 'protein/protein complex, protein/protein complex']
-"""
-
-# =============================================================================
-
-import os
-import sys
-import argparse
-import logging
-import json
-
-# =============================================================================
-
-LOG = logging.getLogger('Get PPC PDB IDs from PDBe')
-FILENAME = 'PPC-DIMER_3-26-18PDBe'
-
-XRAY = ['X-ray diffraction', 'X-ray powder diffraction']
-
-RESOLUTION = 3.5
-DIFFR = 0.05
-
-# =============================================================================
-
-def main(pdbe):
-	with open(pdbe) as infile:
-		structure = json.load(infile)
-		dimer = get_dimer(get_ppc(structure))
-		dimer_filt = filter_rfactor(filter_resolution(filter_annotation(dimer)))
-		to_json(dimer_filt, FILENAME)
-		to_txt(get_id(dimer_filt), FILENAME)
-
-	if os.path.exists('{}.txt'.format(FILENAME)):
-		LOG.info('Finished!')
-	else:
-		LOG.error('Warning! [Output] Not found!')
-		sys.exit(1)
-
-
-
-def get_ppc(pdbe):
-	ppc_unique = []
-	ppc_repeated = []
-	for i in xrange(len(pdbe)):
-		if 'assembly_composition' in pdbe[i].keys():
-			assembly_composition = pdbe[i]['assembly_composition']
-			if len(assembly_composition) == 1 and \
-			assembly_composition == ['protein/protein complex']:
-				ppc_unique.append(pdbe[i])
-			elif len(assembly_composition) > 1:
-				if assembly_composition.count('protein/protein complex') >= 1 and \
-				assembly_composition.count(
-				assembly_composition[0]) == len(assembly_composition):
-					ppc_repeated.append(pdbe[i])
-	ppc_all = ppc_unique + ppc_repeated
-	return ppc_all
-
-
-def get_dimer(pdbe):
-	dimer_unique = []
-	dimer_repeated = []
-	for i in xrange(len(pdbe)):
-		if 'assembly_type' in pdbe[i].keys():
-			assembly_type = pdbe[i]['assembly_type']
-			if len(assembly_type) == 1 and \
-			assembly_type == ['dimer']:
-				dimer_unique.append(pdbe[i])
-			elif len(assembly_type) > 1:
-				if assembly_type.count('dimer') >= 1 and \
-				assembly_type.count(assembly_type[0]) == len(assembly_type):
-					dimer_repeated.append(pdbe[i])
-	dimer_all = dimer_unique + dimer_repeated
-	return dimer_all
-
-
-def filter_annotation(pdbe):
-	annotation = []
-	for i in xrange(len(pdbe)):
-		if len(pdbe[i]['experimental_method']) == 1:
-			annotation.append(pdbe[i])
-	return annotation
-
-def filter_resolution(pdbe):
-	quality = []
-	for i in xrange(len(pdbe)):
-		if len([e for e in pdbe[i]['experimental_method'] if e in XRAY]) == 1:
-			if 'resolution' in pdbe[i].keys() and \
-			float(pdbe[i]['resolution']) <= RESOLUTION:
-				quality.append(pdbe[i])
-	return quality
-
-def filter_rfactor(pdbe):
-	quality = []
-	for i in xrange(len(pdbe)):
-		if len([e for e in pdbe[i]['experimental_method'] if e in XRAY]) == 1:
-			if 'r_free' in pdbe[i].keys() and 'r_factor' in pdbe[i].keys():
-				if float(pdbe[i]['r_free'] - pdbe[i]['r_factor']) <= abs(DIFFR):
-					quality.append(pdbe[i])
-	return quality
-
-
-def get_id(pdbe):
-	pdb_id = []
-	for i in xrange(len(pdbe)):
-		pdb_id.append(pdbe[i]['pdb_id'])
-	return pdb_id
-
-
-def to_json(data, outfile):
-	with open('{}.json'.format(outfile), 'wb') as jsonfile:
-		json.dump(data, jsonfile)
-
-
-def to_txt(data, outfile):
-	with open('{}.txt'.format(outfile), 'wb') as txtfile:
-		for pdb_id in data:
-			txtfile.write(pdb_id + '\n')
-
-
-
-def setlogger():
-	LOG.setLevel(logging.INFO)
-	ch = logging.StreamHandler()
-	ch.setLevel(logging.INFO)
-	formatter = logging.Formatter('%(asctime)s - %(name)s - %(funcName)s - \
-	%(levelname)s - %(message)s')
-	ch.setFormatter(formatter)
-	LOG.addHandler(ch)
-
-# =============================================================================
-
-if __name__ == "__main__":
-	parser = argparse.ArgumentParser(description = 'Get protein/protein \
-	complex PDB IDs from PDBe')
-	parser.add_argument('pdbe', help = 'Input [.json file]: \
-	PBDe (with assembly and structure quality information included')
-	options = parser.parse_args()
-	setlogger()
-	main(options.pdbe)
diff --git a/pyScripts/get_ppc_id_from_pdbe.py b/pyScripts/get_ppc_id_from_pdbe.py
deleted file mode 100644
index e41157a8..00000000
--- a/pyScripts/get_ppc_id_from_pdbe.py
+++ /dev/null
@@ -1,121 +0,0 @@
-# -*- coding: utf-8 -*-
-
-"""
-Author: Alexandra Moine-Franel
-Date: February 2018
-Version: 1
-
-
-
-IDENTIFY PROTEIN-PROTEIN COMPLEXES FROM PDBe
-
-
-Usage: [Script.py] [PDBe]
-------------------------------------------------------------------
-Argument:
-	[PDBe]:
-    Input (json format)
-    PDBe (with assembly information included)
-
-Return:
-	[list(PPC)]:
-    Output (txt format)
-    Protein/protein complex PDB IDs
-	
-	[json(PPC)]:
-	Output (json format)
-	Protein/protein complex information
-	
-	
-Warning:
-------- 
-PDBs with unique and repeated assembly composition annotation are both included!
-[unique annotation: 'protein/protein complex']
-[repeated annotation: 'protein/protein complex, protein/protein complex']
-"""
-
-# =============================================================================
-
-import argparse
-import logging
-import json
-import pandas as pd
-
-# =============================================================================
-
-LOG = logging.getLogger('Get protein/protein complex PDB IDs from PDBe')
-
-# =============================================================================
-
-def setlogger():
-    LOG.setLevel(logging.INFO)
-    ch = logging.StreamHandler()
-    ch.setLevel(logging.INFO)
-    formatter = logging.Formatter('%(asctime)s - %(name)s - %(funcName)s - %(levelname)s - %(message)s')
-    ch.setFormatter(formatter)
-    LOG.addHandler(ch)
-
-
-
-def main(pdbe):
-	structure = pd.read_json(pdbe, orient = 'columns')
-	ppc_to_txt(get_ppc_id(structure))
-	ppc_to_json(get_ppc_data(structure))
-
-
-
-def get_ppc_id(pdbe):
-	ppc_unique = []
-	ppc_repeated = []
-	for i in xrange(len(pdbe['grouped']['pdb_id']['groups'])):
-		assembly_composition = pdbe['grouped']['pdb_id']['groups'][i]['doclist']['docs'][0]['assembly_composition']
-		if len(assembly_composition) == 1 and assembly_composition == ['protein/protein complex']:
-			ppc_unique.append(pdbe['grouped']['pdb_id']['groups'][i]['doclist']['docs'][0]['pdb_id'])
-		elif len(assembly_composition) > 1:
-			if assembly_composition.count('protein/protein complex') >= 1 and \
-			assembly_composition.count(assembly_composition[0]) == len(assembly_composition):
-				ppc_repeated.append(pdbe['grouped']['pdb_id']['groups'][i]['doclist']['docs'][0]['pdb_id'])
-	ppc_all = ppc_unique + ppc_repeated
-	return ppc_all
-
-
-
-def get_ppc_data(pdbe):
-	ppc_unique_data = []
-	ppc_repeated_data = []
-	for i in xrange(len(pdbe['grouped']['pdb_id']['groups'])):
-		assembly_composition = pdbe['grouped']['pdb_id']['groups'][i]['doclist']['docs'][0]['assembly_composition']
-		if len(assembly_composition) == 1 and assembly_composition == ['protein/protein complex']:
-			ppc_unique_data.append(pdbe['grouped']['pdb_id']['groups'][i]['doclist']['docs'][0])
-		elif len(assembly_composition) > 1:
-			if assembly_composition.count('protein/protein complex') >= 1 and \
-			assembly_composition.count(assembly_composition[0]) == len(assembly_composition):
-				ppc_repeated_data.append(pdbe['grouped']['pdb_id']['groups'][i]['doclist']['docs'][0])
-	ppc_all_data = ppc_unique_data + ppc_repeated_data
-	return ppc_all_data
-
-
-
-def ppc_to_txt(ppc):
-	with open('PPC_2-20-18PDBe.txt', 'wb') as txtfile:
-		for pdb_id in ppc:
-			txtfile.write(pdb_id + '\n')
-
-
-
-def ppc_to_json(ppc):
-	with open('PPC_2-20-18PDBe.json', 'wb') as jsonfile:
-		json.dump(ppc, jsonfile)
-
-
-
-# ==============================================================================
-
-if __name__ == "__main__":
-    parser = argparse.ArgumentParser(description = 
-					'Get protein/protein complex PDB IDs from PDBe')
-    parser.add_argument('pdbe', help = 'Input [.json file]: \
-					PBDe (with assembly information included')
-    options = parser.parse_args()
-    setlogger()
-    main(options.pdbe)
diff --git a/pyScripts/get_ppc_ligand_V2.py b/pyScripts/get_ppc_ligand_V2.py
deleted file mode 100644
index ed1f1576..00000000
--- a/pyScripts/get_ppc_ligand_V2.py
+++ /dev/null
@@ -1,268 +0,0 @@
-# -*- coding: utf-8 -*-
-
-"""
-Author: Alexandra Moine-Franel
-Date: March 2018
-Version: 3
-
-
-
-IDENTIFY PROTEIN STRUCTURE WITH COMPOUNDS (with or without including ions)
-INVOLVED IN PROTEIN-PROTEIN INTERACTION FROM PDBe
-
-
-Usage: [Script.py] [PDBe] [IONS]
-------------------------------------------------------------------
-Arguments:
-	[PDBe]:
-	Input (json format)
-	PDBe (with [assembly_composition], [compound_id] and [uniprot_id] included)
-
-	[IONS]:
-	Input (txt format)
-	Compounds considered as ions 
-
-Return:
-	[list(protein)]:
-	Output (txt format)
-	Proteins with compounds associated with a protein/protein complex PDB IDs
-
-	[json(protein)]:
-	Output (json format)
-	Proteins with compounds associated with a protein/protein complex dataset
-
-	Compounds:
-	---------
-	** EXAMPLE: [u'FHB : 3-FLUORO-4-HYDROXYBENZOIC ACID']
-			or  [u'FHB : 3-FLUORO-4-HYDROXYBENZOIC ACID', u'FE : FE (III) ION']
-
-
-    [list(protein)]:
-    Output (txt format)
-    Proteins with compounds associated with a protein/protein complex PDB IDs
-    IONS ONLY EXCLUDED
-
-    [json(protein)]:
-    Output (json format)        
-    Proteins with compounds associated with a protein/protein complex dataset
-    IONS ONLY EXCLUDED
-
-	Compounds:
-	---------
-	** EXAMPLE: [u'FE : FE (III) ION']
-	
-
-
-!Warning!:
-------- 
-PDBs with unique and repeated assembly composition annotation are both included!
-[unique annotation: 'protein/protein complex']
-[repeated annotation: 'protein/protein complex, protein/protein complex']
-"""
-
-# =============================================================================
-
-import os
-import sys
-import argparse
-import logging
-import json
-
-# =============================================================================
-
-LOG = logging.getLogger('Get PPC PDB IDs with ligand')
-FILENAME_with_ions = 'PPC-PROT-COMPOUNDS_3-26-18PDBe'
-FILENAME_without_ions = 'PPC-PROT-COMPOUNDS_noIONS_3-26-18PDBe'
-
-XRAY = ['X-ray diffraction', 'X-ray powder diffraction']
-
-RESOLUTION = 3.5
-DIFFR = 0.05
-
-# =============================================================================
-
-def main(pdbe, ion):
-	with open(pdbe) as infile:
-		structure = json.load(infile)
-
-		# Get protein/protein complex (PPC)
-		ppc = filter_rfactor(filter_resolution(filter_annotation(
-		get_ppc(structure))))
-		to_txt(get_id(ppc), 'PPC_3-26-18PDBe')
-
-		# Get protein structure with [compounds]
-		prot_compound = filter_rfactor(filter_resolution(filter_annotation(
-		get_with_compound(get_prot(structure)))))
-		
-	# Collect PPC UniProt
-	ppc_uniprot = get_uniprot(ppc)
-
-	# Get PPC-associated proteins with compounds
-	ppc_ligand = get_prot_compound_ppc(prot_compound, ppc_uniprot)
-	to_json(ppc_ligand, FILENAME_with_ions)
-	to_txt(get_id(ppc_ligand), FILENAME_with_ions)
-
-	# Get PPC-associated proteins with compounds (ions only not included)
-	ions = []
-	with open(ion, 'r') as ion_file:
-		for i in ion_file:
-			ions.append(i.strip().upper())
-
-	prot_compound_without_ions = get_without_ions(prot_compound, ions)
-	ppc_ligand_without_ions = get_prot_compound_ppc(prot_compound_without_ions, ppc_uniprot)
-	to_json(ppc_ligand_without_ions, FILENAME_without_ions)
-	to_txt(get_id(ppc_ligand_without_ions), FILENAME_without_ions)
-
-
-	if os.path.exists('{}.txt'.format(FILENAME_with_ions)) and \
-	os.path.exists('{}.txt'.format(FILENAME_without_ions)):
-		LOG.info('Finished!')
-	else:
-		LOG.error('Warning! [Outputs] Not found!')
-		sys.exit(1)
-
-
-
-def get_ppc(pdbe):
-	ppc_unique = []
-	ppc_repeated = []
-	for i in xrange(len(pdbe)):
-		if 'assembly_composition' in pdbe[i].keys():
-			assembly_composition = pdbe[i]['assembly_composition']
-			if len(assembly_composition) == 1 and \
-			assembly_composition == ['protein/protein complex']:
-				ppc_unique.append(pdbe[i])
-			elif len(assembly_composition) > 1:
-				if assembly_composition.count('protein/protein complex') >= 1 and \
-				assembly_composition.count(
-				assembly_composition[0]) == len(assembly_composition):
-					ppc_repeated.append(pdbe[i])
-	ppc_all = ppc_unique + ppc_repeated
-	return ppc_all
-
-
-def get_prot(pdbe):
-	prot_unique = []
-	prot_repeated = []
-	for i in xrange(len(pdbe)):
-		if 'assembly_composition' in pdbe[i].keys():
-			assembly_composition = pdbe[i]['assembly_composition']
-			if len(assembly_composition) == 1 and \
-			assembly_composition == ['protein structure']:
-				prot_unique.append(pdbe[i])
-			elif len(assembly_composition) > 1:
-				if assembly_composition.count('protein structure') >= 1 and \
-				assembly_composition.count(
-				assembly_composition[0]) == len(assembly_composition):
-					prot_repeated.append(pdbe[i])
-	prot_all = prot_unique + prot_repeated
-	return prot_all
-
-
-def filter_annotation(pdbe):
-	annotation = []
-	for i in xrange(len(pdbe)):
-		if len(pdbe[i]['experimental_method']) == 1:
-			annotation.append(pdbe[i])
-	return annotation
-
-def filter_resolution(pdbe):
-	quality = []
-	for i in xrange(len(pdbe)):
-		if len([e for e in pdbe[i]['experimental_method'] if e in XRAY]) == 1:
-			if 'resolution' in pdbe[i].keys() and \
-			float(pdbe[i]['resolution']) <= RESOLUTION:
-				quality.append(pdbe[i])
-	return quality
-
-def filter_rfactor(pdbe):
-	quality = []
-	for i in xrange(len(pdbe)):
-		if len([e for e in pdbe[i]['experimental_method'] if e in XRAY]) == 1:
-			if 'r_free' in pdbe[i].keys() and 'r_factor' in pdbe[i].keys():
-				if float(pdbe[i]['r_free'] - pdbe[i]['r_factor']) <= abs(DIFFR):
-					quality.append(pdbe[i])
-	return quality
-
-
-def get_with_compound(pdbe):
-	compound = []
-	for i in xrange(len(pdbe)):
-		if 'compound_id' in pdbe[i].keys():
-			compound.append(pdbe[i])
-	return compound
-
-
-def get_uniprot(pdbe):
-	uniprot = []
-	for i in xrange(len(pdbe)):
-		if 'uniprot_id' in pdbe[i].keys():
-			uniprot.extend(pdbe[i]['uniprot_id'])
-	return uniprot
-
-
-def get_prot_compound_ppc(protein, uniprot):
-	prot_compound_ppc = []
-	for i in xrange(len(protein)):
-		if 'uniprot_id' in protein[i].keys():
-			if len([e for e in protein[i]['uniprot_id'] if e in uniprot]) >= 1:
-				prot_compound_ppc.append(protein[i])
-	return prot_compound_ppc
-
-
-def get_without_ions(protein, ions):
-	without_ions = []
-	with_ions_not_only = []
-	for i in xrange(len(protein)):
-		if 'compound_id' in protein[i].keys():
-			if len([e for e in protein[i]['compound_id'] if e in ions]) == 0:
-				without_ions.append(protein[i])
-			elif len([e for e in protein[i]['compound_id'] if e in ions]) >= 1:
-				if len([e for e in protein[i]['compound_id'] if e in ions]) \
-				!= len(protein[i]['compound_id']):
-					with_ions_not_only.append(protein[i])
-	print len(without_ions), len(with_ions_not_only)
-	compound_ions = without_ions + with_ions_not_only
-	return compound_ions
-
-
-def get_id(pdbe):
-	pdb_id = []
-	for i in xrange(len(pdbe)):
-		pdb_id.append(pdbe[i]['pdb_id'])
-	return pdb_id
-
-
-def to_json(data, outfile):
-	with open('{}.json'.format(outfile), 'wb') as jsonfile:
-		json.dump(data, jsonfile)
-
-
-def to_txt(data, outfile):
-	with open('{}.txt'.format(outfile), 'wb') as txtfile:
-		for pdb_id in data:
-			txtfile.write(pdb_id + '\n')
-
-
-
-def setlogger():
-	LOG.setLevel(logging.INFO)
-	ch = logging.StreamHandler()
-	ch.setLevel(logging.INFO)
-	formatter = logging.Formatter('%(asctime)s - %(name)s - %(funcName)s - \
-	%(levelname)s - %(message)s')
-	ch.setFormatter(formatter)
-	LOG.addHandler(ch)
-
-# =============================================================================
-
-if __name__ == "__main__":
-	parser = argparse.ArgumentParser(description = 'Get protein/protein \
-	complex PDB IDs from PDBe')
-	parser.add_argument('pdbe', help = 'Input [.json file]: \
-	PBDe (with assembly and structure quality information included')
-	parser.add_argument('ion', help = 'Input [.txt file]: Compounds considered \
-	as ions')
-	options = parser.parse_args()
-	setlogger()
-	main(options.pdbe, options.ion)
diff --git a/pyScripts/get_ppc_ligand_compound_from_pdbe.py b/pyScripts/get_ppc_ligand_compound_from_pdbe.py
deleted file mode 100644
index a91caa2d..00000000
--- a/pyScripts/get_ppc_ligand_compound_from_pdbe.py
+++ /dev/null
@@ -1,131 +0,0 @@
-# -*- coding: utf-8 -*-
-
-"""
-Author: Alexandra Moine-Franel
-Date: February 2018
-Version: 2
-
-
-
-IDENTIFY INTERACTING LIGANDS AND COMPOUNDS OF PROTEIN-PROTEIN COMPLEXES FROM PDBe
-
-
-Usage: [Script.py] [PDBe]
-------------------------------------------------------------------
-Argument:
-	[PDBe]:
-    Input (json format)
-    PDBe (with assembly information included)
-
-Return:
-	[list(ligands)]:
-    Output (txt format)
-    Interacting ligands of protein/protein complexes
-
-	[list(compounds)]:
-    Output (txt format)	
-    Compounds of protein/protein complexes
-
-	
-Warning:
-------- 
-PDBs with unique and repeated assembly composition annotation are both included!
-[unique annotation: 'protein/protein complex']
-[repeated annotation: 'protein/protein complex, protein/protein complex']
-"""
-
-# =============================================================================
-
-import argparse
-import logging
-import json
-import pandas as pd
-
-# =============================================================================
-
-LOG = logging.getLogger('Get ligands and compounds of protein/protein complexes from PDBe')
-
-# =============================================================================
-
-def setlogger():
-    LOG.setLevel(logging.INFO)
-    ch = logging.StreamHandler()
-    ch.setLevel(logging.INFO)
-    formatter = logging.Formatter('%(asctime)s - %(name)s - %(funcName)s - %(levelname)s - %(message)s')
-    ch.setFormatter(formatter)
-    LOG.addHandler(ch)
-
-
-
-def main(pdbe):
-	structure = pd.read_json(pdbe, orient = 'columns')
-	ligand_to_txt(get_ligand(get_ppc_data(structure)))
-	compound_to_txt(get_compound(get_ppc_data(structure)))
-
-def get_ppc_data(pdbe):
-	ppc_unique_data = []
-	ppc_repeated_data = []
-	for i in xrange(len(pdbe['grouped']['pdb_id']['groups'])):
-		assembly_composition = pdbe['grouped']['pdb_id']['groups'][i]['doclist']['docs'][0]['assembly_composition']
-		if len(assembly_composition) == 1 and assembly_composition == ['protein/protein complex']:
-			ppc_unique_data.append(pdbe['grouped']['pdb_id']['groups'][i]['doclist']['docs'][0])
-		elif len(assembly_composition) > 1:
-			if assembly_composition.count('protein/protein complex') >= 1 and \
-			assembly_composition.count(assembly_composition[0]) == len(assembly_composition):
-				ppc_repeated_data.append(pdbe['grouped']['pdb_id']['groups'][i]['doclist']['docs'][0])
-	ppc_all_data = ppc_unique_data + ppc_repeated_data
-	return ppc_all_data
-
-
-
-def get_ligand(ppc):
-	ppc_ligand = []
-	unique_ligand = []
-	for i in xrange(len(ppc)):
-		if 'interacting_ligands' in ppc[i].keys():
-			ppc_ligand.append(ppc[i]['interacting_ligands'][0].split(' :')[0])
-
-	for j in ppc_ligand:
-		if j not in unique_ligand:
-			unique_ligand.append(j)
-			
-	#print len(unique_ligand)
-	return unique_ligand
-
-
-
-def get_compound(ppc):
-        ppc_compound = []
-        unique_compound = []
-	for i in xrange(len(ppc)):
-                if 'compound_id' in ppc[i].keys():
-			ppc_compound.extend(ppc[i]['compound_id'])
-
-	for j in ppc_compound:
-		if j not in unique_compound:
-			unique_compound.append(j)
-
-	#print len(unique_compound)
-	return unique_compound
-
-
-def ligand_to_txt(ligand):
-	with open('PPC_LIGANDS_2-20-18PDBe.txt', 'wb') as txtfile:
-		for lig in ligand:
-			txtfile.write(lig + '\n')
-
-def compound_to_txt(compound):
-        with open('PPC_COMPOUNDS_2-20-18PDBe.txt', 'wb') as txtfile:
-                for c in compound:
-                        txtfile.write(c + '\n')
-
-# ==============================================================================
-
-if __name__ == "__main__":
-    parser = argparse.ArgumentParser(description = 
-					'Get ligands and compounds of protein/protein complexes from PDBe')
-    parser.add_argument('pdbe', help = 'Input [.json file]: \
-					PBDe (with interacting ligand and compound information included')
-    options = parser.parse_args()
-    setlogger()
-    main(options.pdbe)
diff --git a/pyScripts/get_ppc_protcomp-ion_ppc_from_pdbe.py b/pyScripts/get_ppc_protcomp-ion_ppc_from_pdbe.py
deleted file mode 100644
index 59a2c0ac..00000000
--- a/pyScripts/get_ppc_protcomp-ion_ppc_from_pdbe.py
+++ /dev/null
@@ -1,321 +0,0 @@
-# -*- coding: utf-8 -*-
-
-"""
-Author: Alexandra Moine-Franel
-Date: February 2018
-Version: 2
-
-
-
-IDENTIFY PROTEIN STRUCTURE WITH COMPOUNDS (with or without including ions)
-INVOLVED IN PROTEIN-PROTEIN INTERACTION FROM PDBe
-
-
-Usage: [Script.py] [PDBe]
-------------------------------------------------------------------
-Argument:
-	[PDBe]:
-    Input (json format)
-    PDBe (with [assembly_composition], [compound_id] and [uniprot_id] included)
-
-Return:
-	[list(protein)]:
-    Output (txt format)
-    Proteins with compounds associated with a protein/protein complex PDB IDs
-	
-	[json(protein)]:
-    Output (json format)	
-    Proteins with compounds associated with a protein/protein complex dataset
-
-	Compounds:
-	---------
-	** EXAMPLE: [u'FHB : 3-FLUORO-4-HYDROXYBENZOIC ACID']
-			or  [u'FHB : 3-FLUORO-4-HYDROXYBENZOIC ACID', u'FE : FE (III) ION']
-
-
-
-    [list(protein)]:
-    Output (txt format)
-    Proteins with compounds associated with a protein/protein complex PDB IDs
-    IONS ONLY EXCLUDED
-
-    [json(protein)]:
-    Output (json format)        
-    Proteins with compounds associated with a protein/protein complex dataset
-    IONS ONLY EXCLUDED
-
-	Compounds:
-	---------
-	** EXAMPLE: [u'FE : FE (III) ION']
-	
-
-
-!Warning!:
-------- 
-PDBs with unique and repeated assembly composition annotation are both included!
-[unique annotation: 'protein/protein complex']
-[repeated annotation: 'protein/protein complex, protein/protein complex']
-"""
-
-# =============================================================================
-
-import argparse
-import logging
-import json
-import pandas as pd
-
-# =============================================================================
-
-LOG = logging.getLogger('Proteins associated with a PPC - Compounds')
-
-# =============================================================================
-
-def setlogger():
-    LOG.setLevel(logging.INFO)
-    ch = logging.StreamHandler()
-    ch.setLevel(logging.INFO)
-    formatter = logging.Formatter('%(asctime)s - %(name)s - %(funcName)s - %(levelname)s - %(message)s')
-    ch.setFormatter(formatter)
-    LOG.addHandler(ch)
-
-
-def main(pdbe):
-	structure = pd.read_json(pdbe, orient = 'columns')
-
-	# Get protein/protein complex [assembly_composition]
-	ppc = get_ppc_data(structure)
-
-	# Get protein structure [assembly_composition] with 'compounds'
-	prot_compound = get_compound_id(get_prot_data(structure))
-
-	# Collect PPC UniProt
-	ppc_uniprot = get_uniprot(ppc)
-
-	# Identify protein structure with compounds associated to PPC 
-	to_txt(get_id_prot_compound_ppc(prot_compound, ppc_uniprot))
-	to_json(get_data_prot_compound_ppc(prot_compound, ppc_uniprot))
-
-	
-	# Get protein structure [assembly_composition] with compounds (ions only not included)
-	ion = get_ion(get_compound_name(prot_compound))
-	prot_compound_without_ions = get_compound_without_ion(prot_compound, ion)
-	to_txt_ion(get_id_prot_compound_ppc(prot_compound_without_ions, ppc_uniprot))
-	to_json_ion(get_data_prot_compound_ppc(prot_compound_without_ions, ppc_uniprot))
-
-
-
-
-def get_ppc_data(pdbe):
-	ppc_unique_data = []
-	ppc_repeated_data = []
-	for i in xrange(len(pdbe['grouped']['pdb_id']['groups'])):
-		assembly_composition = pdbe['grouped']['pdb_id']['groups'][i]['doclist']['docs'][0]['assembly_composition']
-		if len(assembly_composition) == 1 and assembly_composition == ['protein/protein complex']:
-			ppc_unique_data.append(pdbe['grouped']['pdb_id']['groups'][i]['doclist']['docs'][0])
-		elif len(assembly_composition) > 1:
-			if assembly_composition.count('protein/protein complex') >= 1 and \
-			assembly_composition.count(assembly_composition[0]) == len(assembly_composition):
-				ppc_repeated_data.append(pdbe['grouped']['pdb_id']['groups'][i]['doclist']['docs'][0])
-	ppc_all_data = ppc_unique_data + ppc_repeated_data
-	return ppc_all_data
-
-
-
-def get_prot_data(pdbe):
-	prot_unique_data = []
-	prot_repeated_data = []
-	for i in xrange(len(pdbe['grouped']['pdb_id']['groups'])):
-		assembly_composition = pdbe['grouped']['pdb_id']['groups'][i]['doclist']['docs'][0]['assembly_composition']
-		if len(assembly_composition) == 1 and assembly_composition == ['protein structure']:
-			prot_unique_data.append(pdbe['grouped']['pdb_id']['groups'][i]['doclist']['docs'][0])
-		elif len(assembly_composition) > 1:
-			if assembly_composition.count('protein structure') >= 1 and \
-			assembly_composition.count(assembly_composition[0]) == len(assembly_composition):
-				prot_repeated_data.append(pdbe['grouped']['pdb_id']['groups'][i]['doclist']['docs'][0])
-	prot_all_data = prot_unique_data + prot_repeated_data
-	return prot_all_data
-
-
-
-def get_compound_id(data):
-	'''
-	Get 3D structure with compound [compound_id]
-	--------------------------------------------------
-	Argument:
-		[json]: protein structures (dataset)
-
-	Return:
-		[json]: protein structures with compounds (dataset)
-	'''
-	compound = []
-	for i in xrange(len(data)):
-                if 'compound_id' in data[i].keys():
-					compound.append(data[i])
-	return compound
-
-
-
-def get_uniprot(data):
-	'''
-	Get UniProt
-	-------------------------------------------------
-	Argument:
-		[json]: protein/protein complexes (dataset)
-
-	Return:
-		[list]: protein/protein complexes Uniprot IDs
-	'''
-	uniprot = []
-	for i in xrange(len(data)):
-		if 'uniprot_id' in data[i].keys():
-			uniprot.extend(data[i]['uniprot_id'])
-	return uniprot
-
-
-def get_id_prot_compound_ppc(data, uniprot):
-	'''
-	Get PDB IDs only of protein structure with compounds associated with a protein/protein complex
-	-----------------------------------------------------------------------------------------------
-	Arguments:
-		[json]: protein structures with compounds (dataset)
-		[list]: protein/protein complex uniprot id
-
-	Return:
-		[list]: protein structure with compounds associated with a protein/protein complex PDB IDs
-	''' 
-	prot_compound_pcc = []
-	for i in xrange(len(data)):
-		if 'uniprot_id' in data[i].keys():
-			if len([e for e in data[i]['uniprot_id'] if e in uniprot]) >= 1:
-				prot_compound_pcc.append(data[i]['pdb_id'])
-	return prot_compound_pcc
-				
-
-
-def get_data_prot_compound_ppc(data, uniprot):
-	'''
-	Get data only of protein structure with compounds associated with a protein/protein complex
-	-----------------------------------------------------------------------------------------------
-	Arguments:
-		[json]: protein structures with compounds (dataset)
-		[list]: protein/protein complex uniprot id
-
-	Return:
-		[json]: protein structure with compounds associated with a protein/protein complex (dataset)
-	''' 
-	prot_compound_pcc_data = []
-	for i in xrange(len(data)):
-		if 'uniprot_id' in data[i].keys():
-			if len([e for e in data[i]['uniprot_id'] if e in uniprot]) >= 1:
-					prot_compound_pcc_data.append(data[i])
-	return prot_compound_pcc_data
-
-
-
-
-def get_compound_name(data):
-	'''
-	Get protein compound names
-	--------------------------------------------------
-	Argument:
-		[json]: protein structures with compounds (dataset)
-
-	Return:
-		[list]: compound names
-		** EXAMPLE: [u'FHB : 3-FLUORO-4-HYDROXYBENZOIC ACID', u'FE : FE (III) ION']
-	'''
-	compound = []
-	for i in xrange(len(data)):
-		if 'compound_name' in data[i].keys():
-			compound.extend(data[i]['compound_name'])
-	return compound
-
-		
-
-def get_ion(compound_name):
-	'''
-	Get protein ions
-	--------------------------------------------------
-	Argument:
-		[list]: compound names
-		** EXAMPLE: [u'FHB : 3-FLUORO-4-HYDROXYBENZOIC ACID', u'FE : FE (III) ION']
-
-	Return:
-		[list]: ions
-		** EXAMPLE: ['FE']
-	'''
-	ion = []
-	ion_unique = []
-	for i in xrange(len(compound_name)):
-		if 'ION' in compound_name[i].split(' :')[1].split(' '):
-			ion.append(compound_name[i].split(' :')[0])
-	for j in ion:
-		if j not in ion_unique:
-			ion_unique.append(j)
-	print ion_unique
-	return ion_unique
-
-
-
-def get_compound_without_ion(data, ions):
-	'''
-	Get 3D structure with compound [compound_id], ion excluded
-	----------------------------------------------------------
-	Arguments:
-		[json]: protein structures (dataset)
-		[list]: ions
-
-	Return:
-		[json]: protein structures with compounds != ions (dataset)
-				
-	!Warning!
-	---------
-	Protein structures either with only compounds, or compounds and ions are included
-	** EXAMPLE: [u'FHB : 3-FLUORO-4-HYDROXYBENZOIC ACID']
-			or  [u'FHB : 3-FLUORO-4-HYDROXYBENZOIC ACID', u'FE : FE (III) ION']
-
-	Only protein structures with only ions are excluded
-	** EXAMPLE: [u'FE : FE (III) ION']				
-	'''
-	compound_without_ion = []
-	compound_with_ion = []
-	for i in xrange(len(data)):
-		if 'compound_id' in data[i].keys():
-			if len([e for e in data[i]['compound_id'] if e in ions]) == 0:
-				compound_without_ion.append(data[i])
-			elif len([e for e in data[i]['compound_id'] if e in ions]) >= 1:
-				if len([e for e in data[i]['compound_id'] if e in ions]) != len(data[i]['compound_id']):
-					compound_with_ion.append(data[i])
-	compound_ion = compound_without_ion + compound_with_ion				
-	return compound_ion
-
-
-
-def to_txt(index):
-	with open('PROT-COMPOUNDS_PPC_2-20-18PDBe.txt', 'wb') as txtfile:
-		for i in index:
-			txtfile.write(i + '\n')
-
-def to_json(index):
-	with open('PROT-COMPOUNDS_PPC_2-20-18PDBe.json', 'wb') as jsonfile:
-		json.dump(index, jsonfile)
-
-def to_txt_ion(index):
-	with open('PROT-COMPOUNDS-noIONS_PPC_2-20-18PDBe.txt', 'wb') as txtfile:
-		for i in index:
-			txtfile.write(i + '\n')
-
-def to_json_ion(index):
-	with open('PROT-COMPOUNDS-noIONS_PPC_2-20-18PDBe.json', 'wb') as jsonfile:
-		json.dump(index, jsonfile)
-
-# ==============================================================================
-
-if __name__ == "__main__":
-    parser = argparse.ArgumentParser(description = 
-					'IDENTIFY PROTEIN STRUCTURE WITH COMPOUNDS INVOLVED IN PROTEIN-PROTEIN INTERACTION FROM PDBe')
-    parser.add_argument('pdbe', help = 'Input [.json file]: \
-					PBDe (with [assembly_composition], [compound_id] and [uniprot_id] included)')
-    options = parser.parse_args()
-    setlogger()
-    main(options.pdbe)
diff --git a/pyScripts/iPPI-DB_descriptors_V2.py b/pyScripts/iPPI-DB_descriptors_V2.py
deleted file mode 100644
index ef516ce6..00000000
--- a/pyScripts/iPPI-DB_descriptors_V2.py
+++ /dev/null
@@ -1,320 +0,0 @@
-# -*- coding: utf-8 -*-
-
-"""
-Author: Alexandra Moine-Franel
-Date: January 2018
-Version: 2
-
-
-
-CALCULATE 2D/3D POCKET DESCRIPTORS FROM VOLSITE
-
-
-Usage: [Script.py] [PDB_descriptor.txt] [PDB_2D-3Ddescriptors.csv]
-------------------------------------------------------------------
-
-[PDB_descriptor.txt]:
-    Input (txt format)
-    Pocket descriptors calculated by VolSite
-	
-[PDB_2D-3Ddescriptors.csv]:
-    Output (csv format)
-    Pocket descriptors including:
-    * 89 descriptors from VolSite
-    * 10 descriptors using a linear combination of VolSite descriptors
-      (Kuenemann, 2016 Scientific Reports)
-    * 10 geometric descriptors from RDKit toolkit
-      (http://www.rdkit.org/docs/Overview.html, version 2017.09.1)
-"""
-
-# =============================================================================
-
-import os
-import sys
-import argparse
-import logging
-import csv
-import pandas as pd
-from rdkit import Chem
-from rdkit.Chem import Descriptors3D
-
-# =============================================================================
-
-LOG = logging.getLogger("CALCULATE 2D/3D POCKET DESCRIPTORS FROM VOLSITE")
-
-
-VOLSITE_HEADER = [
-    'Volume', 'CZ', 'CA', 'O', 'OD1', 'OG', 'N', 'NZ', 'DU',
-    'CZ40', 'CZ40-50', 'CZ50-60', 'CZ60-70', 'CZ70-80', 'CZ80-90', 'CZ90-100', 'CZ100-110', 'CZ110-120', 'CZ120',
-    'CA40', 'CA40-50', 'CA50-60', 'CA60-70', 'CA70-80', 'CA80-90', 'CA90-100', 'CA100-110', 'CA110-120', 'CA120',
-    'O40', 'O40-50', 'O50-60', 'O60-70', 'O70-80', 'O80-90', 'O90-100', 'O100-110', 'O110-120', 'O120',
-    'OD140', 'OD140-50', 'OD150-60', 'OD160-70', 'OD170-80', 'OD180-90', 'OD190-100', 'OD1100-110', 'OD1110-120',
-    'OD1120',
-    'OG40', 'OG40-50', 'OG50-60', 'OG60-70', 'OG70-80', 'OG80-90', 'OG90-100', 'OG100-110', 'OG110-120', 'OG120',
-    'N40', 'N40-50', 'N50-60', 'N60-70', 'N70-80', 'N80-90', 'N90-100', 'N100-110', 'N110-120', 'N120',
-    'NZ40', 'NZ40-50', 'NZ50-60', 'NZ60-70', 'NZ70-80', 'NZ80-90', 'NZ90-100', 'NZ100-110', 'NZ110-120', 'NZ120',
-    'DU40', 'DU40-50', 'DU50-60', 'DU60-70', 'DU70-80', 'DU80-90', 'DU90-100', 'DU100-110', 'DU110-120', 'DU120',
-    'POCKET'
-]
-
-DESC_COMBINATION = {
-    'T40': ['CZ40', 'CA40', 'O40', 'OD140', 'OG40', 'N40', 'NZ40', 'DU40'],
-    'T40-50': ['CZ40-50', 'CA40-50', 'O40-50', 'OD140-50', 'OG40-50', 'N40-50', 'NZ40-50', 'DU40-50'],
-    'T50-60': ['CZ50-60', 'CA50-60', 'O50-60', 'OD150-60', 'OG50-60', 'N50-60', 'NZ50-60', 'DU50-60'],
-    'T60-70': ['CZ60-70', 'CA60-70', 'O60-70', 'OD160-70', 'OG60-70', 'N60-70', 'NZ60-70', 'DU60-70'],
-    'T70-80': ['CZ70-80', 'CA70-80', 'O70-80', 'OD170-80', 'OG70-80', 'N70-80', 'NZ70-80', 'DU70-80'],
-    'T80-90': ['CZ80-90', 'CA80-90', 'O80-90', 'OD180-90', 'OG80-90', 'N80-90', 'NZ80-90', 'DU80-90'],
-    'T90-100': ['CZ90-100', 'CA90-100', 'O90-100', 'OD190-100', 'OG90-100', 'N90-100', 'NZ90-100', 'DU90-100'],
-    'T100-110': ['CZ100-110', 'CA100-110', 'O100-110', 'OD1100-110', 'OG100-110', 'N100-110', 'NZ100-110', 'DU100-110'],
-    'T110-120': ['CZ110-120', 'CA110-120', 'O110-120', 'OD1110-120', 'OG110-120', 'N110-120', 'NZ110-120', 'DU110-120'],
-}
-
-DESC_GEOM = [
-    'PMI1', 'PMI2', 'PMI3', 'NPR1', 'NPR2', 'Rgyr',
-    'Asphericity', 'SpherocityIndex', 'Eccentricity', 'InertialShapeFactor'
-]
-
-# =============================================================================
-
-def setlogger():
-    LOG.setLevel(logging.INFO)
-    ch = logging.StreamHandler()
-    ch.setLevel(logging.INFO)
-    formatter = logging.Formatter('%(asctime)s - %(name)s - %(funcName)s - \
-								   %(levelname)s - %(message)s')
-    ch.setFormatter(formatter)
-    LOG.addHandler(ch)
-
-
-def main(volsitedescriptor, pocketdescriptor):
-    volsite_csv = descriptor_volsite(volsitedescriptor)
-    combination_csv = descriptor_combination(volsite_csv)
-    volsite_combination_csv = "{}volsite+combinaison.csv".format(
-							  volsite_csv.rsplit("volsite.csv")[0])
-    merge_csv(volsite_csv, combination_csv, volsite_combination_csv)
-    geometric_csv = descriptor_geometric(volsitedescriptor)
-    merge_csv(volsite_combination_csv, geometric_csv, pocketdescriptor)
-
-    if os.path.exists(pocketdescriptor):
-        os.remove(volsite_csv)
-        os.remove(combination_csv)
-        os.remove(volsite_combination_csv)
-        os.remove(geometric_csv)
-        LOG.info('Finished!')
-    else:
-        LOG.error('Error: 2D/3D Pocket Descriptor file not found')
-        sys.exit(1)
-
-
-def descriptor_volsite(txtfile):
-    """
-    Convert VolSite output file from txt format to csv format
-    (descriptor headers added)
-    ---------------------------------------------------------
-    Argument:
-        [file]: VolSite descriptors (txt format)
-
-    Return:
-        [file]: VolSite descriptors (csv format)
-                with descriptor headers
-    """
-    try:
-        with open(txtfile, 'rb') as infile:
-            volsite_csv = "{}_volsite.csv".format(os.path.splitext(txtfile)[0])
-            with open(volsite_csv, 'wb') as outfile:
-                in_text = csv.reader(infile, delimiter=' ')
-                out_csv = csv.writer(outfile)
-                out_csv.writerow(VOLSITE_HEADER)
-                for line in in_text:
-                    out_csv.writerow(line)
-    except IOError, e:
-        LOG.error('{}'.format(e))
-        sys.exit(1)
-    return volsite_csv
-
-
-def descriptor_combination(volsite_descriptor_csv):
-    """
-    Calculate and write linear combinations of VolSite descriptors to csv file
-   (Kuenemann, 2016 Scientific Reports)
-    ---------------------------------------------------------------------------
-    Argument:
-        [file]: VolSite descriptors (csv format)
-
-    Return:
-        [file]: linear combinations of VolSite descriptors (csv format)
-    """
-    with open(volsite_descriptor_csv, 'rb') as infile:
-        volsite = csv.reader(infile, delimiter = ',')
-        descriptors = volsite.next()
-
-        # Create a dictionnary
-        # key(descriptor): values(list of all pocket values)
-        data = {}
-        # Count the number of pockets
-        numbpocket = 0
-        for header in descriptors:
-            data[header] = []
-        for pocket in volsite:
-            numbpocket += + 1
-            for header, value in zip(descriptors, pocket):
-                data[header].append(value)
-        combination_csv = "{}combination.csv".format(
-						  volsite_descriptor_csv.rsplit("volsite.csv")[0])
-        with open(combination_csv, 'wb') as outfile:
-            combivolsite = csv.writer(outfile, delimiter = ',', 
-									  lineterminator = '\n')
-            # Descriptor headers and values have to be in variables
-            # to write them in a new file column by column (sep = comma)
-            descname = []
-            cdata = []
-            for dch in DESC_COMBINATION.keys():
-                # dch = descriptor combination header (column)
-                bsum = []
-                for p in range(numbpocket):
-                    # p = pocket (row)
-                    buriedness_values = []
-                    for colname in DESC_COMBINATION[dch]:
-                        # Get buriedness value by descriptors
-                        buriedness_values.append(float(data[colname][p]))
-                    # Get sum of buriedness value by descriptor combinations
-                    bsum.append(sum(buriedness_values))
-                descname.append(dch)
-                cdata.append(bsum)
-            combivolsite.writerow(descname)
-            datatransposed = zip(*cdata)
-            for row in datatransposed:
-                combivolsite.writerow(row)
-    return combination_csv
-
-
-def descriptor_geometric(txtfile):
-    """
-    Write geometric descriptor from the negative image of binding pockets 
-    detected by VolSite to csv file
-    ---------------------------------------------------------------------------
-    Argument:
-        [file]: VolSite descriptors (txt format)
-
-    Return:
-        [file]: shape descriptors (csv format)
-    """
-    with open(txtfile, 'rb') as infile:
-        pocketvolsite = csv.reader(infile, delimiter = ',')
-        # Get the number of pockets
-        numbpocket = 0
-        for pocket in pocketvolsite:
-            numbpocket += + 1
-        geometric_csv = "{}geometric.csv".format(os.path.splitext(txtfile)[0])
-        with open(geometric_csv, 'wb') as outfile:
-            shape = csv.writer(outfile, delimiter = ',', lineterminator = '\n')
-            shape.writerow(DESC_GEOM)
-            # Calculate geometric descriptors pocket by pockets
-            for cavity in range(1, numbpocket + 1):
-				pocket_mol2 = "{}_CAVITY_N{}_ALL.mol2".format(
-							  geometric_csv.rsplit("_")[0], cavity)	
-				replace_mol2atom(pocket_mol2)
-				shape.writerow(calculate_shape_descriptor(
-				"temp_{}_CAVITY_N{}_ALL.mol2".format(
-				geometric_csv.rsplit("_")[0], cavity)))
-				os.remove("temp_{}_CAVITY_N{}_ALL.mol2".format(
-				geometric_csv.rsplit("_")[0], cavity))
-	return geometric_csv
-		
-
-def replace_mol2atom(cavity):
-    """
-    Replace the atom name assigned by VolSite to the probes by 'C' (carbone)
-	
-	Warning 1
-	Fixing the RDKit error: 'atom' with a degree > 1
-	
-	Warning 2
-	RDKit needs the output file [PDB_CAVITY_Nx_ALL_temp.mol2]
-	NOT the link
-	------------------------------------------------------------------
-    Argument:
-        [file]: negative image of a binding pocket (mol2 format)
-
-    Return:
-        [file]: negative image of a binding pocket with carbone as atom name
-				(mol2 format, temporary file used as input by RDKit)
-    """
-    header = True
-    parsing = False	
-    with open(cavity, 'rb') as infile:
-	with open("temp_{}.mol2".format(cavity.rsplit('.')[0]), 'wb') as tempf:
-		for line in infile:
-			if line.startswith('@<TRIPOS>ATOM'):
-				tempf.write(line)# + '\n')
-				header = False
-				parsing = True
-				continue
-			elif line.startswith('@<TRIPOS>BOND'):
-				parsing = False
-					
-			if header:
-				tempf.write(line)
-			if parsing:
-				tempf.write(line.replace(line.split()[5], 'C'))
-	#return tempf
-	
-			
-def calculate_shape_descriptor(cavity):
-    """
-    Calculate geometric descriptors with RDKit 
-    ------------------------------------------
-    Geometric descriptor details:
-    http://www.rdkit.org/Python_Docs/rdkit.Chem.Descriptors3D-module.html
-
-    Argument:
-        [file]: negative image of a binding pocket (mol2 format)
-
-    Return:
-        [list]: geometric descriptors
-    """
-    mol2file = Chem.MolFromMol2File(cavity, sanitize = False, removeHs = False)
-    geom_val = []
-    geom_val.append(Descriptors3D.PMI1(mol2file))
-    geom_val.append(Descriptors3D.PMI2(mol2file))
-    geom_val.append(Descriptors3D.PMI3(mol2file))
-    geom_val.append(Descriptors3D.NPR1(mol2file))
-    geom_val.append(Descriptors3D.NPR2(mol2file))
-    geom_val.append(Descriptors3D.RadiusOfGyration(mol2file))
-    geom_val.append(Descriptors3D.Asphericity(mol2file))
-    geom_val.append(Descriptors3D.SpherocityIndex(mol2file))
-    geom_val.append(Descriptors3D.Eccentricity(mol2file))
-    geom_val.append(Descriptors3D.InertialShapeFactor(mol2file))
-    return geom_val
-
-
-def merge_csv(csv_infile1, csv_infile2, csv_outfile):
-    """
-    Concatenate two csv files
-    -------------------------
-    Arguments:
-        [file]: input (csv format)
-        [file]: input (csv format)
-        [file]: output filename (csv format)
-    """
-    csv1 = pd.read_csv(csv_infile1)
-    csv2 = pd.read_csv(csv_infile2)
-    csv3 = pd.concat([csv1, csv2], axis = 1)
-    return csv3.to_csv(csv_outfile, sep = ',', index = False)
-
-# ==============================================================================
-
-if __name__ == "__main__":
-    parser = argparse.ArgumentParser(description = 
-					'Calculate 2D/3D Pocket Descriptors from VolSite')
-    parser.add_argument('volsitedescriptor', help = 'Input [.txt file]: \
-					Pocket descriptors calculated by VolSite')
-    parser.add_argument('pocketdescriptor', help = 'Output [.csv filename]: \
-					Pocket descriptors including \
-					89 descriptors from VolSite, \
-					10 descriptors using a combination of VolSite descriptors \
-					and 10 geometric descriptors')
-
-    options = parser.parse_args()
-    setlogger()
-    main(options.volsitedescriptor, options.pocketdescriptor)
diff --git a/pyScripts/ion.pdf b/pyScripts/ion.pdf
deleted file mode 100644
index 46ecfa3582acda4ea7252068a70a9f9a1259d6f8..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 121203
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%0A$h+i
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
LgIy{4tKa_xA&}`H

diff --git a/pyScripts/ion.txt b/pyScripts/ion.txt
deleted file mode 100644
index c2ec6798..00000000
--- a/pyScripts/ion.txt
+++ /dev/null
@@ -1,63 +0,0 @@
-
-3NI
-4MO
-4PU
-4TI
-6MO
-AG
-AL
-AU
-AU3
-AUC
-BA
-BR
-BS3
-CA
-CD
-CE
-CF
-CL
-CO
-CR
-CS
-CU
-CU1
-ER3
-EU
-EU3
-F
-FE
-FE2
-GA
-HG
-IOD
-IR
-IR3
-K
-LA
-LI
-LU
-MG
-MN
-MN3
-MOO
-NA
-NI
-PD
-PR
-PT
-PT4
-RB
-RU
-SB
-SE4
-SM
-SR
-TB
-TH
-THE
-TL
-W
-ZN
-ZR
-
diff --git a/pyScripts/ppiinterface_dist.py b/pyScripts/ppiinterface_dist.py
deleted file mode 100644
index e79e69ac..00000000
--- a/pyScripts/ppiinterface_dist.py
+++ /dev/null
@@ -1,335 +0,0 @@
-# -*- coding: utf-8 -*-
-
-"""
-Author: Alexandra Moine-Franel
-Date: February 2018
-Version: 4
-
-
-IDENTIFY PROTEIN INTERFACE / POCKET RESIDUES
-
-Determine protein residues at a specific distance either from protein partner, 
-ligand (small molecule) or negative image of the pocket generated by VolSite.
-
-
-
-Usage:	[Script.py] [TARGET] [PARTNER] -d (DISTANCE)
--------------------------------------------------------------------------------
-[TARGET]:
-	Input (.mol2 or .pdb format)
-	Protein CHAIN
-
-[PARTNER]:
-	Input (.mol2 or .pdb format)
-	Negative image of the pocket generated by VolSite (.mol2 format)
-	OR Ligand (.pdb format)
-	OR Protein (.pdb format)
-	
-(DISTANCE)- optionnal
-	Input (float or integer)
-	Distance threshold between the target and the partner
-	* Distance target-protein/ligand = 5 angstroms - by defaut
-	* Distance target-cavity = 3.5 angstroms - by default
-	
-------------------	
-	
-[POCKET_RESIDUES]: 
-	Output (.txt format)
-	'PDB-targetchain-partnerchain_distance.txt' (target-protein/ligand)
-	OR 'PDB-targetchain-CAVITY_Nx_ALL_distance.txt' (target-cavity)
-"""
-
-# =============================================================================
-
-import csv
-import os
-import sys
-import argparse
-import logging
-#import time
-from biopandas.mol2 import PandasMol2
-from biopandas.pdb import PandasPdb
-
-# =============================================================================
-
-LOG = logging.getLogger("IDENTIFY PROTEIN INTERFACE / POCKET RESIDUES")
-
-# =============================================================================
-
-def main(target, partner, distance):
-	#start = time.time()
-	if target and partner:
-		if os.path.splitext(target)[-1] == '.mol2' and \
-		os.path.splitext(partner)[-1] == '.mol2':
-			mol2target = parse_mol2(target)
-			mol2partner = parse_mol2(partner)
-			mol2_respocket(mol2target, mol2partner, distance)
-			if os.path.exists('{}-{}_{}.txt'.format( \
-			mol2target.code, mol2partner.code.rsplit('.mol2')[0], \
-			distance)):
-				LOG.info('Finished!')
-				#end = time.time()
-				#print(end - start)
-			else:
-				LOG.error('Warning! [Output] Not found!')
-				sys.exit(1)			
-		elif os.path.splitext(target)[-1] == '.pdb' and \
-			os.path.splitext(partner)[-1] == '.pdb':
-			pdbtarget = parse_pdb(target)
-			pdbpartner = parse_pdb(partner)
-			if pdbpartner.df['ATOM'].empty == True:
-				pdb_resinterfacePL(pdbtarget, pdbpartner, distance)
-				if os.path.exists('{}-{}-{}_{}.txt'.format(pdbtarget.code, \
-				pdbtarget.df['ATOM']['chain_id'][0], pdbpartner.df['HETATM']['residue_name'][0], \
-				distance)):
-					LOG.info('Finished!')
-					#end = time.time()
-					#print(end - start)
-				else:
-					LOG.error('Warning! [Output] Not found!')
-					sys.exit(1)
-			else:
-				pdb_resinterfacePP(pdbtarget, pdbpartner, distance)
-				if os.path.exists('{}-{}-{}_{}.txt'.format(pdbtarget.code, \
-				pdbtarget.df['ATOM']['chain_id'][0], pdbpartner.df['ATOM']['chain_id'][0], \
-				distance)):
-					LOG.info('Finished!')
-					#end = time.time()
-					#print(end - start)
-				else:
-					LOG.error('Warning! [Output] Not found!')
-					sys.exit(1)
-		else:
-			LOG.error('Error! [TARGET] or [PARTNER] file not in .mol2 or .pdb format')
-			sys.exit(1)
-	elif target and not partner:
-		parser.error('Error: [PARTNER: protein, ligand or cavity] is required')
-	
-	
-
-				
-def parse_mol2(mol2file):
-	"""
-	Parse .mol2 file 
-	---------------------------------------------------------------------------
-	Argument: [file]: .mol2 format
-	Return: [dataframe]
-	"""
-	try:
-		pmol = PandasMol2().read_mol2(mol2file)
-	except(IOError), e:
-		LOG.error('{}'.format(e))
-		sys.exit(1)
-	else:
-		return pmol
-
-
-def parse_pdb(pdbfile):
-	"""
-	Parse .pdb file 
-	---------------------------------------------------------------------------
-	Argument: [file]: .pdb format
-	Return: [dataframe]
-	"""
-	try:
-		ppdb = PandasPdb().read_pdb(pdbfile)
-	except(IOError), e:
-		LOG.error('{}'.format(e))
-		sys.exit(1)
-	else:
-		return ppdb
-
-
-def mol2_respocket(mol2target, mol2partner, distance):
-	"""
-	Identify protein target residues at a specified distance from its partner
-	(i.e. the cavity negative image generated by VolSite).
-	---------------------------------------------------------------------------
-	Arguments:
-		[file]: protein target (.mol2 format)
-		[file]: negative image of the binding pocket (.mol2 format)
-		[float]: distance threshold (by default, 3.5 angstroms)
-	Return:
-		[file]: pocket residues (.txt format)
-	"""
-	ppires = []
-	with open('{}-{}_{}.txt'.format(mol2target.code, \
-	mol2partner.code.rsplit('.mol2')[0], \
-	distance), 'wb') as outfile:
-		for probe in xrange(len(mol2partner.df.atom_id)):
-			for atom in xrange(len(mol2target.df.atom_id)):
-				if mol2target.df.subst_name[atom] not in ppires:
-					xp = mol2target.df['x'][atom]
-					xc = mol2partner.df['x'][probe]
-					distX = x_dist(xp, xc)
-					if distX < float(distance):
-						yp = mol2target.df['y'][atom]
-						yc = mol2partner.df['y'][probe]
-						distXY = xy_dist(xp, yp, xc, yc)
-						if distXY < float(distance):
-							zp = mol2target.df['z'][atom]
-							zc = mol2partner.df['z'][probe]
-							distXYZ = euclidian_dist(xp, yp, zp, xc, yc, zc) 
-							if distXYZ < float(distance):
-								ppires.append(mol2target.df.subst_name[atom])
-		for resp in ppires:
-			outfile.write(resp + '\n')
-
-
-def pdb_resinterfacePP(pdbtarget, pdbpartner, distance):
-	"""
-	Identify protein target residues at a specified distance from its partner
-	(i.e. protein)
-	---------------------------------------------------------------------------
-	Arguments:
-		[file]: protein target (.pdb format)
-		[file]: protein partner (.pdb format)
-		[float]: distance threshold (by default, 5 angstroms)
-	Return:
-		[file]: interface residues (.txt format)
-	"""
-	ppires = []
-	with open('{}-{}-{}_{}.txt'.format(pdbtarget.code, \
-	pdbtarget.df['ATOM']['chain_id'][0], pdbpartner.df['ATOM']['chain_id'][0], \
-	distance), 'wb') as outfile:
-		for atomt in xrange(len(pdbpartner.df['ATOM']['atom_number'])):
-			for atomp in xrange(len(pdbtarget.df['ATOM']['atom_number'])):
-				if ''.join(map(str, (pdbtarget.df['ATOM']['residue_name'][atomp], \
-				pdbtarget.df['ATOM']['residue_number'][atomp]))) not in ppires:
-					xp = pdbtarget.df['ATOM']['x_coord'][atomp]
-					xc = pdbpartner.df['ATOM']['x_coord'][atomt]
-					distX = x_dist(xp, xc)
-					if distX < float(distance):
-						yp = pdbtarget.df['ATOM']['y_coord'][atomp]
-						yc = pdbpartner.df['ATOM']['y_coord'][atomt]
-						distXY = xy_dist(xp, yp, xc, yc)
-						if distXY < float(distance):
-							zp = pdbtarget.df['ATOM']['z_coord'][atomp]
-							zc = pdbpartner.df['ATOM']['z_coord'][atomt]
-							distXYZ = euclidian_dist(xp, yp, zp, xc, yc, zc) 
-							if distXYZ < float(distance):
-								ppires.append(''.join(map(str, \
-								(pdbtarget.df['ATOM']['residue_name'][atomp], \
-								pdbtarget.df['ATOM']['residue_number'][atomp]))))
-		for resp in ppires:
-			outfile.write(resp + '\n')
-
-
-def pdb_resinterfacePL(pdbtarget, pdbpartner, distance):
-	"""
-	Identify protein target residues at a specified distance from its partner
-	(i.e. ligand)
-	---------------------------------------------------------------------------
-	Arguments:
-		[file]: protein target (.pdb format)
-		[file]: ligand (.pdb format)	 
-		[float]: distance threshold (by default, 5 angstroms)
-	Return:
-		[file]: pocket residues (.txt format)
-	"""
-	ppires = []
-	with open('{}-{}-{}_{}.txt'.format(pdbtarget.code, \
-	pdbtarget.df['ATOM']['chain_id'][0], pdbpartner.df['HETATM']['residue_name'][0], \
-	distance), 'wb') as outfile:
-		for atomt in xrange(len(pdbpartner.df['HETATM']['atom_number'])):
-			for atomp in xrange(len(pdbtarget.df['ATOM']['atom_number'])):
-				if ''.join(map(str, (pdbtarget.df['ATOM']['residue_name'][atomp], \
-				pdbtarget.df['ATOM']['residue_number'][atomp]))) not in ppires:
-					xp = pdbtarget.df['ATOM']['x_coord'][atomp]
-					xc = pdbpartner.df['HETATM']['x_coord'][atomt]
-					distX = x_dist(xp, xc)
-					if distX < float(distance):
-						yp = pdbtarget.df['ATOM']['y_coord'][atomp]
-						yc = pdbpartner.df['HETATM']['y_coord'][atomt]
-
-						distXY = xy_dist(xp, yp, xc, yc)
-						if distXY < float(distance):
-							zp = pdbtarget.df['ATOM']['z_coord'][atomp]
-							zc = pdbpartner.df['HETATM']['z_coord'][atomt]
-							distXYZ = euclidian_dist(xp, yp, zp, xc, yc, zc) 
-							if distXYZ < float(distance):
-								ppires.append(''.join(map(str, \
-								(pdbtarget.df['ATOM']['residue_name'][atomp], \
-								pdbtarget.df['ATOM']['residue_number'][atomp]))))
-		for resp in ppires:
-			outfile.write(resp + '\n')
-
-
-def x_dist(x1, x2):
-	"""
-	Calculate the distance x between two 1D points
-	----------------------------------------------------------------------
-	Arguments:
-		[float]: coordinate x of target atom
-				 coordinate x of partnet atom
-	Return:
-		[float]: distance 
-	"""
-	dist = ((x1-x2)**2) ** 0.5
-	return dist
-
-
-def xy_dist(x1, y1, x2, y2):
-	"""
-	Calculate the distance xy between two 2D points
-	----------------------------------------------------------------------
-	Arguments:
-		[float]: coordinates xy of target atom
-				 coordinates xy of partnet atom
-	Return:
-		[float]: distance 
-	"""
-	dist = ((x1-x2)**2 + (y1-y2)**2) ** 0.5	
-	return dist
-
-	
-def euclidian_dist(x1, y1, z1, x2, y2, z2):
-	"""
-	Calculate the euclidian distance xyz between two 3D points
-	----------------------------------------------------------------------
-	Arguments:
-		[float]: coordinates xyz of target atom
-				 coordinates xyz of partnet atom
-	Return:
-		[float]: distance 
-	"""
-	dist = ((x1-x2)**2 + (y1-y2)**2 + (z1-z2)**2) ** 0.5
-	return dist
-	
-	
-	
-def setlogger():
-	LOG.setLevel(logging.INFO)
-	ch = logging.StreamHandler()
-	ch.setLevel(logging.INFO)
-	formatter = logging.Formatter('%(asctime)s - %(name)s - %(funcName)s - \
-	%(levelname)s - %(message)s')
-	ch.setFormatter(formatter)
-	LOG.addHandler(ch)
-
-
-def default_distance(options):
-	if os.path.splitext(options.partner)[-1] == '.mol2':
-		options.distance = 3.5
-	elif os.path.splitext(options.partner)[-1] == '.pdb':
-		options.distance = 5.0
-	return options.distance
-
-# ==============================================================================
-
-if __name__ == "__main__":
-	parser = argparse.ArgumentParser(description = 'Identify interface/pocket residues')
-	parser.add_argument('target', \
-	help = 'Input [.mol2 or .pdb file]: protein target')
-	parser.add_argument('partner', \
-	help = 'Input [.pdb file]: protein partner or ligand; OR [.mol2 file]: cavity')
-	parser.add_argument('-d', dest = 'distance', type = float, \
-	help = 'Input [float or integer]: distance threshold \
-	{by default, target-protein/ligand = 5A; target-cavity = 3.5A}')
-	options = parser.parse_args()
-	
-	if options.distance is None:
-		default_distance(options)
-	
-	setlogger()
-	main(options.target, options.partner, options.distance)
-- 
GitLab