From c6395d1295eeda12d3036c4bf15bb23e714af266 Mon Sep 17 00:00:00 2001 From: "Daniel N. Baker" Date: Mon, 9 Sep 2024 15:14:59 -0700 Subject: [PATCH] Update for more recent pybind11. --- bioseq/__init__.py | 4 ---- bioseq/poa_util.py | 6 +++++- requirements.txt | 6 +++--- setup.py | 8 ++++---- src/poa.cpp | 2 +- 5 files changed, 13 insertions(+), 13 deletions(-) diff --git a/bioseq/__init__.py b/bioseq/__init__.py index 158cfe0..2c863c8 100644 --- a/bioseq/__init__.py +++ b/bioseq/__init__.py @@ -1,9 +1,5 @@ import cbioseq from cbioseq import * -#from .tax import get_taxid -#import bioseq.tax as tax -#import bioseq.decoders as decoders -#import bioseq.hattn as hattn import bioseq.poa_util as poa_util import bioseq.softmax as softmax import bioseq.loaders as loaders diff --git a/bioseq/poa_util.py b/bioseq/poa_util.py index a24f1ab..31ebb6e 100644 --- a/bioseq/poa_util.py +++ b/bioseq/poa_util.py @@ -1,6 +1,5 @@ import networkx as nx import torch -import pytorch_geometric as pyg class FastxSeq: trans = str.maketrans("U", "T") @@ -61,6 +60,11 @@ def __init__(self, tok, emb_dim=128): # Takes the output of bioseq.SequenceGraph().matrix() and creates the data for GAT def embed_graph(self, mat): + try: + import pytorch_geometric as pyg + except ImportError: + print("Cannot import pytorch_geometric") + raise x, data = self.to_x_data(mat) return pyg.Data(x, data) diff --git a/requirements.txt b/requirements.txt index 4c19dfe..a75594c 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,12 +1,12 @@ -linear_attention_transformer -fast_transformer_pytorch einops +numpy +torch x-transformers>=0.19 entmax -product-key-memory local-attention numpy pybind11==2.7.1 feedback-transformer-pytorch memcnn e2cnn +pysam diff --git a/setup.py b/setup.py index db97fa3..2b031e5 100644 --- a/setup.py +++ b/setup.py @@ -45,7 +45,7 @@ def cpp_flag(compiler): raise RuntimeError('Unsupported compiler -- at least C++11 support ' 'is needed!') -#full_gomp_path = subprocess.check_output("realpath `$CXX --print-file-name=libgomp.a`", shell=True).decode('utf-8') +full_gomp_path = subprocess.check_output("realpath `$CXX --print-file-name=libgomp.a`", shell=True).decode('utf-8').strip() extra_compile_args = ['-march=native', '-Wno-char-subscripts', '-Wno-unused-function', '-Wno-ignored-qualifiers', @@ -54,7 +54,7 @@ def cpp_flag(compiler): '-lz', '-fopenmp', "-pipe", '-O0', '-DNDEBUG'] -extra_link_opts = ["-fopenmp", "-lz", "-lgomp"] +extra_link_opts = ["-fopenmp", "-lz"] class BuildExt(build_ext): @@ -90,7 +90,7 @@ def build_extensions(self): ext.extra_compile_args = opts ext.extra_compile_args += extra_compile_args ext.extra_link_args = link_opts + extra_link_opts - # ext.extra_objects = [full_gomp_path] + ext.extra_objects = [full_gomp_path, "spoa/lib/libspoa.a"] build_ext.build_extensions(self) @@ -104,7 +104,7 @@ def build_spoa(): __version__ = "0.1.8" build_spoa() include_dirs = [get_pybind_include(), get_pybind_include(True), "./", "spoa/include"] - ext_modules = [Extension("cbioseq", ["src/bioseq.cpp", "src/poa.cpp", "src/tokenize.cpp", "src/omp.cpp", 'src/fxstats.cpp'], include_dirs=include_dirs, language='c++', extra_objects=["spoa/lib/libspoa.a"])] + ext_modules = [Extension("cbioseq", ["src/bioseq.cpp", "src/poa.cpp", "src/tokenize.cpp", "src/omp.cpp", 'src/fxstats.cpp'], include_dirs=include_dirs, language='c++')] setup( name='bioseq', version=__version__, diff --git a/src/poa.cpp b/src/poa.cpp index 4e4b6bb..589a90a 100644 --- a/src/poa.cpp +++ b/src/poa.cpp @@ -162,7 +162,7 @@ struct SequenceGroup { *destPtr++ = (edge.first << 32) >> 32; *destPtr++ = edge.second; } - matrixCOOPy = matrixCOOPy.reshape(std::vector{{static_cast(edges.size()), 3}}); + matrixCOOPy.resize(std::vector{{static_cast(edges.size()), 3}}); std::transform(std::cbegin(bases), std::cend(bases), std::begin(bases), [&](const char base) -> char {return graph->decoder(base);});