Source code for PyPreTools
# -*- coding: utf-8 -*-
# Copyright (c) 2016-2017, Zhijiang Yao, Jie Dong and Dongsheng Cao
# All rights reserved.
# This file is part of the PyBioMed.
# The contents are covered by the terms of the BSD license
# which is included in the file license.txt, found at the root
# of the PyBioMed source tree.
"""
This file provides functions to convert descriptors list of multiple molecules (dicts) into CSV
If you have any questions, please feel free to contact us.
E-mail: biomed@csu.edu.cn
@File name: PyPreTools
@author: Jie Dong and Zhijiang Yao
"""
# Core Library modules
import csv
[docs]def DictToCSV(MultiDictList, csvOutPath):
"""
Convert descriptors list of multiple molecules (dicts) into CSV
:param MultiDictList: a list contains multiple dicts
:param csvOutPath: path to save CSV file
:return: csvOutPath
"""
try:
desHeader = MultiDictList[0].keys()
desContent = []
for i in MultiDictList:
temp = []
for j in desHeader:
temp.append(i.get(j))
desContent.append(temp)
f = file(csvOutPath, "w")
writer = csv.writer(f)
writer.writerow(tuple(desHeader))
for k in desContent:
writer.writerow(tuple(k))
f.close()
return csvOutPath
except Exception as e:
return str(e)
[docs]def ListToCSV(MultiList, csvOutPath, Name="Des"):
"""
Convert descriptors list of multiple molecules (lists) into CSV
:param MultiList: a list contains multiple lists
:param csvOutPath: path to save CSV file
:return: csvOutPath
"""
try:
desHeader = []
for index in range(len(MultiList[0])):
desHeader.append(str(Name) + str(index + 1))
desContent = []
for i in MultiList:
desContent.append(i)
f = file(csvOutPath, "w")
writer = csv.writer(f)
writer.writerow(tuple(desHeader))
for k in desContent:
writer.writerow(tuple(k))
f.close()
return csvOutPath
except Exception as e:
return str(e)
[docs]def TupleToCSV(MultiTupleList, csvOutPath, Name="Des"):
"""
Convert descriptors list of multiple molecules (tuple) into CSV
:param MultiTupleList: a list contains multiple lists
:param csvOutPath: path to save CSV file
:return: csvOutPath
"""
try:
desHeader = []
for index in range(len(MultiTupleList[0])):
desHeader.append(str(Name) + str(index + 1))
desContent = []
for i in MultiTupleList:
desContent.append(i)
f = file(csvOutPath, "w")
writer = csv.writer(f)
writer.writerow(tuple(desHeader))
for k in desContent:
writer.writerow(k)
f.close()
return csvOutPath
except Exception as e:
return str(e)
if __name__ == "__main__":
print("Only PyBioMed is successfully installed the code below can be run!")
# uncomment below code as an example to use if you have successfully installed PyBioMed.
print("-" * 10 + "START" + "-" * 10)
from rdkit import Chem
from PyBioMed.PyMolecule.charge import GetCharge
smis = ["CCCC", "CCCCC", "CCCCCC", "CC(N)C(=O)O", "CC(N)C(=O)[O-].[Na+]"]
smi5 = ["CCCCCC", "CCC(C)CC", "CC(C)CCC", "CC(C)C(C)C", "CCCCCN", "c1ccccc1N"]
des_list2 = []
from PyBioMed.PyMolecule.fingerprint import CalculatePubChemFingerprint
for index, smi in enumerate(smis):
m = Chem.MolFromSmiles(smi)
des_list2.append(CalculatePubChemFingerprint(m))
print(des_list2)
print(ListToCSV(des_list2, "reeeee.csv", "pubchem"))
print("-" * 25)
des_list = []
for index, smi in enumerate(smis):
m = Chem.MolFromSmiles(smi)
des_list.append(GetCharge(m))
print(des_list)
print(DictToCSV(des_list, "reeee.csv"))
print("-" * 25)
print("-" * 10 + "END" + "-" * 10)