Skip to content
Snippets Groups Projects
Commit 191c7101 authored by Ricardo Wurmus's avatar Ricardo Wurmus
Browse files

gnu: Add crossmap.

* gnu/packages/bioinformatics.scm (crossmap): New variable.
* gnu/packages/patches/crossmap-allow-system-pysam.patch: New file.
* gnu-system.am (dist_patch_DATA): Add it.
parent 1385d37a
No related branches found
No related tags found
No related merge requests found
...@@ -375,6 +375,7 @@ dist_patch_DATA = \ ...@@ -375,6 +375,7 @@ dist_patch_DATA = \
gnu/packages/patches/cpio-CVE-2014-9112-pt5.patch \ gnu/packages/patches/cpio-CVE-2014-9112-pt5.patch \
gnu/packages/patches/cpio-gets-undeclared.patch \ gnu/packages/patches/cpio-gets-undeclared.patch \
gnu/packages/patches/cpufrequtils-fix-aclocal.patch \ gnu/packages/patches/cpufrequtils-fix-aclocal.patch \
gnu/packages/patches/crossmap-allow-system-pysam.patch \
gnu/packages/patches/cssc-gets-undeclared.patch \ gnu/packages/patches/cssc-gets-undeclared.patch \
gnu/packages/patches/cssc-missing-include.patch \ gnu/packages/patches/cssc-missing-include.patch \
gnu/packages/patches/clucene-contribs-lib.patch \ gnu/packages/patches/clucene-contribs-lib.patch \
......
...@@ -272,6 +272,48 @@ (define-public clipper ...@@ -272,6 +272,48 @@ (define-public clipper
"CLIPper is a tool to define peaks in CLIP-seq datasets.") "CLIPper is a tool to define peaks in CLIP-seq datasets.")
(license license:gpl2))) (license license:gpl2)))
(define-public crossmap
(package
(name "crossmap")
(version "0.1.6")
(source (origin
(method url-fetch)
(uri (string-append "mirror://sourceforge/crossmap/CrossMap-"
version ".tar.gz"))
(sha256
(base32
"163hi5gjgij6cndxlvbkp5jjwr0k4wbm9im6d2210278q7k9kpnp"))
;; patch has been sent upstream already
(patches (list
(search-patch "crossmap-allow-system-pysam.patch")))
(modules '((guix build utils)))
;; remove bundled copy of pysam
(snippet
'(delete-file-recursively "lib/pysam"))))
(build-system python-build-system)
(arguments
`(#:python ,python-2
#:phases
(alist-cons-after
'unpack 'set-env
(lambda _ (setenv "CROSSMAP_USE_SYSTEM_PYSAM" "1"))
%standard-phases)))
(inputs
`(("python-numpy" ,python2-numpy)
("python-pysam" ,python2-pysam)
("zlib" ,zlib)))
(native-inputs
`(("python-cython" ,python2-cython)
("python-nose" ,python2-nose)
("python-setuptools" ,python2-setuptools)))
(home-page "http://crossmap.sourceforge.net/")
(synopsis "Convert genome coordinates between assemblies")
(description
"CrossMap is a program for conversion of genome coordinates or annotation
files between different genome assemblies. It supports most commonly used
file formats including SAM/BAM, Wiggle/BigWig, BED, GFF/GTF, VCF.")
(license license:gpl2+)))
(define-public flexbar (define-public flexbar
(package (package
(name "flexbar") (name "flexbar")
......
This patch modifies the build process such that the bundled copy of pysam does
not need to be built if CROSSMAP_USE_SYSTEM_PYSAM is set and the pysam module
can be imported.
Upstream has agreed to apply the patch in the next maintenance release of
crossmap. The patch has already been uploaded to
http://sourceforge.net/projects/crossmap/files/patch/.
diff --git a/setup.py b/setup.py
--- a/setup.py 2015-02-26 15:28:49.771189185 +0100
+++ b/setup.py 2015-02-26 15:55:03.440327752 +0100
@@ -19,6 +19,15 @@
except:
have_numpy = False
+try:
+ import pysam
+ if os.environ['CROSSMAP_USE_SYSTEM_PYSAM']:
+ have_pysam = True
+ else:
+ have_pysam = False
+except ImportError:
+ have_pysam = False
+
if platform.system()=='Windows':
print >> sys.stderr, "Sorry, Windows platform is not supported!"
sys.exit()
@@ -165,49 +174,50 @@
#================= pysam samtools ====================
- extensions.append(Extension(
- "pysam.csamtools",
- csamtools_sources + [ "lib/pysam/%s" % x for x in ("pysam_util.c", )] +\
- glob.glob( os.path.join( "lib/samtools", "*.pysam.c" )) +\
- os_c_files + \
- glob.glob( os.path.join( "lib/samtools", "*", "*.pysam.c" ) ),
- library_dirs=[],
- include_dirs=[ "lib/samtools", "lib/pysam" ] + include_os,
- libraries=[ "z", ],
- language="c",
- define_macros = [('_FILE_OFFSET_BITS','64'),('_USE_KNETFILE','')],
- ))
-
- extensions.append(Extension(
- "pysam.ctabix",
- tabix_sources + [ "lib/pysam/%s" % x for x in ( "tabix_util.c", )] +\
- os_c_files + \
- glob.glob( os.path.join( "lib/tabix", "*.pysam.c" ) ),
- library_dirs=[],
- include_dirs=[ "lib/tabix", "lib/pysam" ] + include_os,
- libraries=[ "z", ],
- language="c",
- define_macros = [('_FILE_OFFSET_BITS','64'),
- ('_USE_KNETFILE','')],
- ))
-
- extensions.append(Extension(
- "pysam.TabProxies",
- tabproxies_sources + os_c_files,
- library_dirs=[],
- include_dirs= include_os,
- libraries=[ "z", ],
- language="c",
- ))
-
- extensions.append(Extension(
- "pysam.cvcf",
- cvcf_sources + os_c_files,
- library_dirs=[],
- include_dirs= ["lib/tabix",] + include_os,
- libraries=[ "z", ],
- language="c",
- ))
+ if not have_pysam:
+ extensions.append(Extension(
+ "pysam.csamtools",
+ csamtools_sources + [ "lib/pysam/%s" % x for x in ("pysam_util.c", )] +\
+ glob.glob( os.path.join( "lib/samtools", "*.pysam.c" )) +\
+ os_c_files + \
+ glob.glob( os.path.join( "lib/samtools", "*", "*.pysam.c" ) ),
+ library_dirs=[],
+ include_dirs=[ "lib/samtools", "lib/pysam" ] + include_os,
+ libraries=[ "z", ],
+ language="c",
+ define_macros = [('_FILE_OFFSET_BITS','64'),('_USE_KNETFILE','')],
+ ))
+
+ extensions.append(Extension(
+ "pysam.ctabix",
+ tabix_sources + [ "lib/pysam/%s" % x for x in ( "tabix_util.c", )] +\
+ os_c_files + \
+ glob.glob( os.path.join( "lib/tabix", "*.pysam.c" ) ),
+ library_dirs=[],
+ include_dirs=[ "lib/tabix", "lib/pysam" ] + include_os,
+ libraries=[ "z", ],
+ language="c",
+ define_macros = [('_FILE_OFFSET_BITS','64'),
+ ('_USE_KNETFILE','')],
+ ))
+
+ extensions.append(Extension(
+ "pysam.TabProxies",
+ tabproxies_sources + os_c_files,
+ library_dirs=[],
+ include_dirs= include_os,
+ libraries=[ "z", ],
+ language="c",
+ ))
+
+ extensions.append(Extension(
+ "pysam.cvcf",
+ cvcf_sources + os_c_files,
+ library_dirs=[],
+ include_dirs= ["lib/tabix",] + include_os,
+ libraries=[ "z", ],
+ language="c",
+ ))
return extensions
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment