forked from fabriziocosta/EDeN
-
Notifications
You must be signed in to change notification settings - Fork 0
/
setup.py
executable file
·121 lines (106 loc) · 3.92 KB
/
setup.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
#!/usr/bin/env python
#-*- coding: utf-8 -*-
import os
import sys
import subprocess
import re
from setuptools import setup
from setuptools.command.sdist import sdist as _sdist
from setuptools.command.install import install as _install
VERSION_PY = """
# This file is originally generated from Git information by running 'setup.py
# version'. Distribution tarballs contain a pre-generated copy of this file.
__version__ = '%s'
"""
def update_version_py():
if not os.path.isdir(".git"):
print "This does not appear to be a Git repository."
return
try:
p = subprocess.Popen(["git", "describe",
"--tags", "--always"],
stdout=subprocess.PIPE)
except EnvironmentError:
print "unable to run git, leaving eden/_version.py alone"
return
stdout = p.communicate()[0]
if p.returncode != 0:
print "unable to run git, leaving eden/_version.py alone"
return
ver = stdout.strip()
f = open("eden/_version.py", "w")
f.write(VERSION_PY % ver)
f.close()
print "set eden/_version.py to '%s'" % ver
def get_version():
try:
f = open("eden/_version.py")
except EnvironmentError:
return None
for line in f.readlines():
mo = re.match("__version__ = '([^']+)'", line)
if mo:
ver = mo.group(1)
return ver
return None
class sdist(_sdist):
def run(self):
update_version_py()
self.distribution.metadata.version = get_version()
return _sdist.run(self)
class install(_install):
def run(self):
_install.run(self)
def checkProgramIsInstalled(self, program, args, where_to_download,
affected_tools):
try:
_out = subprocess.Popen([program, args], stderr=subprocess.PIPE,
stdout=subprocess.PIPE)
return True
except EnvironmentError:
# handle file not found error.
# the config file is installed in:
msg = "\n**{0} not found. This " \
"program is needed for the following "\
"tools to work properly:\n"\
" {1}\n"\
"{0} can be downloaded from here:\n " \
" {2}\n".format(program, affected_tools,
where_to_download)
sys.stderr.write(msg)
except Exception as e:
sys.stderr.write("Error: {}".format(e))
setup(
name='eden',
version=get_version(),
author='Fabrizio Costa',
author_email='eden@googlegroups.com',
packages=['eden',
'eden.util',
'eden.converter',
'eden.converter.graph',
'eden.converter.molecule',
'eden.converter.RNA',
],
scripts=['bin/alignment', 'bin/annotate', 'bin/cluster_kmeans',
'bin/cluster_DBSCAN', 'bin/convert', 'bin/dendrogram',
'bin/fit', 'bin/features', 'bin/matrix',
'bin/nearest_neighbor', 'bin/max_subarrays', 'bin/predict',
],
include_package_data=True,
package_data={},
url='http://pypi.python.org/pypi/eden/',
license='LICENSE',
description='The Explicit Decomposition with Neighborhoods (EDeN) is a decompositional kernel based on the Neighborhood Subgraph Pairwise Distance Kernel (NSPDK) that can be used to induce an explicit feature representation for graphs. This in turn allows the adoption of machine learning algorithm to perform supervised and unsupervised learning task in a scalable way (e.g. fast stochastic gradient descent methods in classification).',
long_description=open('README').read(),
install_requires=[
"numpy >= 1.8.0",
"scipy >= 0.14.0",
"scikit-learn",
"dill",
"networkx",
"matplotlib",
"biopython",
],
cmdclass={'sdist': sdist, 'install': install}
)