diff options
Diffstat (limited to 'sci-chemistry/modeller')
-rw-r--r-- | sci-chemistry/modeller/Manifest | 3 | ||||
-rw-r--r-- | sci-chemistry/modeller/files/9v5-setup.patch | 12 | ||||
-rw-r--r-- | sci-chemistry/modeller/files/modeller-9.25-convert2to3.patch | 702 | ||||
-rw-r--r-- | sci-chemistry/modeller/modeller-9.19.ebuild | 145 | ||||
-rw-r--r-- | sci-chemistry/modeller/modeller-9.25.ebuild (renamed from sci-chemistry/modeller/modeller-9.12-r3.ebuild) | 16 |
5 files changed, 713 insertions, 165 deletions
diff --git a/sci-chemistry/modeller/Manifest b/sci-chemistry/modeller/Manifest index 8c5c6393b..e3d097b4b 100644 --- a/sci-chemistry/modeller/Manifest +++ b/sci-chemistry/modeller/Manifest @@ -1,2 +1 @@ -DIST modeller-9.12.tar.gz 29273842 BLAKE2B 06b4ba3ed918b7f4552ed4bfb358332e623402b92ba48c8def8b4a4f8fe2eba3f30a02b868746cde5a6d7109129f073851523676544bd749a58b86dc71e19198 SHA512 5c0acaf453771347a9de3a0c7240f7ce376244803748edb28923dbaefda779041211ef4b26af5a2774bdf6bc63d7c7d7e62e1354e1550a6742c9575076864352 -DIST modeller-9.19.tar.gz 34885366 BLAKE2B 46310bb7b26392aab2a68881ff666fe05e973ce85b59d16edcc1dab1b5c3f4a9396d991467d189656ac5b71b509049219e54ff246967f305671e57247bcf1f45 SHA512 04bf1195b58a337541e97fc9812b5c0887909a687e4a6004cc9deb89dd078dbc78148fd81552ba189c063b7373e35f4b4a0603e4638af4e2d40fa30625be4c63 +DIST modeller-9.25.tar.gz 44820658 BLAKE2B b3e8a3cc8cc70689a25bc5ed2eee294d67bef8eea9ed4b64d41aba3a27c0bc428ae58e74d734da0eaab7e4fabb213d098b9ba66b9569557159ac7d4a58244b0a SHA512 93f273aba0ec0f884cde5bbcc24769a09386bfc6bf1744d80001e41924b1a682225ba3c554fb9898ef3bfd1fd8451f9458bb92431b20f2f51b01781e79686c91 diff --git a/sci-chemistry/modeller/files/9v5-setup.patch b/sci-chemistry/modeller/files/9v5-setup.patch deleted file mode 100644 index 5fe460580..000000000 --- a/sci-chemistry/modeller/files/9v5-setup.patch +++ /dev/null @@ -1,12 +0,0 @@ -diff -Nu -Nu -uarN modeller-9v3.orig/src/swig/setup.py modeller-9v3/src/swig/setup.py ---- modeller-9v4.orig/src/swig/setup.py 2008-04-15 12:57:50.000000000 +0200 -+++ modeller-9v4/src/swig/setup.py 2008-04-15 12:57:59.000000000 +0200 -@@ -19,7 +19,7 @@ - include_dirs=['../include', '../include/%s' % exetype] + \ - glib['include_dirs'], - libraries=['modeller'] + glib['libraries'], -- library_dirs=['../../lib/%s' % exetype] + glib['library_dirs']) -+ library_dirs=['../../lib/%s' % exetype]) - - setup(name='Modeller', - description='Protein structure modeling by satisfaction of ' \ diff --git a/sci-chemistry/modeller/files/modeller-9.25-convert2to3.patch b/sci-chemistry/modeller/files/modeller-9.25-convert2to3.patch new file mode 100644 index 000000000..d7df05ce6 --- /dev/null +++ b/sci-chemistry/modeller/files/modeller-9.25-convert2to3.patch @@ -0,0 +1,702 @@ +--- modeller-9.25/modlib/modeller/__init__.py (original) ++++ modeller-9.25/modlib/modeller/__init__.py (refactored) +@@ -48,7 +48,7 @@ + return sys.maxsize > 2**32 + # This works on older Pythons, but not in Python 3 + else: +- return type(sys.dllhandle) == long ++ return type(sys.dllhandle) == int + + # Special processing on Windows to find _modeller.pyd and Modeller DLLs: + if hasattr(config, 'install_dir') and hasattr(sys, 'dllhandle'): +--- modeller-9.25/modlib/modeller/coordinates.py (original) ++++ modeller-9.25/modlib/modeller/coordinates.py (refactored) +@@ -147,7 +147,7 @@ + (startres, endres) = self._get_resind() + (startatm, endatm) = get_residue_atom_indices(self.seq, startres, + endres) +- return (range(startatm+1, endatm+1), self.seq) ++ return (list(range(startatm+1, endatm+1)), self.seq) + + atoms = property(__get_atoms, doc="List of all atoms in this chain") + +@@ -158,7 +158,7 @@ + def get_atom_indices(self): + (startind, endind) = get_residue_atom_indices(self.mdl, self._num, + self._num + 1) +- return range(startind + 1, endind + 1), self.mdl ++ return list(range(startind + 1, endind + 1)), self.mdl + + def __repr__(self): + # Get residue number before we do anything else. For alignment +@@ -252,7 +252,7 @@ + def get_atom_indices(self): + (startind, endind) = get_residue_atom_indices(self.mdl, self.offset, + self.offset + len(self)) +- return range(startind + 1, endind + 1), self.mdl ++ return list(range(startind + 1, endind + 1)), self.mdl + + def __getitem__(self, indx): + ret = modutil.handle_seq_indx(self, indx, self.mdl._indxres, +@@ -398,7 +398,7 @@ + return self.mdl.natm + + def get_atom_indices(self): +- return range(self.offset + 1, self.offset + len(self) + 1), self.mdl ++ return list(range(self.offset + 1, self.offset + len(self) + 1)), self.mdl + + def __getitem__(self, indx): + ret = modutil.handle_seq_indx(self, indx, self.mdl._indxatm, +--- modeller-9.25/modlib/modeller/id_table.py (original) ++++ modeller-9.25/modlib/modeller/id_table.py (refactored) +@@ -40,7 +40,7 @@ + def write_seqid_matrix(fh, coder, mat): + """Write a sequence identity matrix to a file""" + nseq = len(mat) +- print(" " * 9 + "".join([ s[:8] for s in coder ])) ++ print((" " * 9 + "".join([ s[:8] for s in coder ]))) + for n1 in range(nseq): + fh.write(coder[n1][:8] + " " + \ + "".join(["%8d" % (mat[n1][n2]+0.5) for n2 in range(nseq)])) +--- modeller-9.25/modlib/modeller/libraries.py (original) ++++ modeller-9.25/modlib/modeller/libraries.py (refactored) +@@ -32,7 +32,7 @@ + return BytesIO(*args) + else: + def _make_bytes_io(self, *args): +- from cStringIO import StringIO ++ from io import StringIO + return StringIO(*args) + + def __getstate__(self): +--- modeller-9.25/modlib/modeller/model.py (original) ++++ modeller-9.25/modlib/modeller/model.py (refactored) +@@ -121,7 +121,7 @@ + + def get_atom_indices(self): + """Get the indices of all atoms in this model""" +- return (range(1, self.natm+1), self) ++ return (list(range(1, self.natm+1)), self) + + def read(self, file, model_format='PDB', + model_segment=('FIRST:@', 'LAST:'), io=None, +@@ -340,7 +340,7 @@ + dope_score = sel.assess_dope() + scorer = normalized_dope.DOPEScorer(self) + z_score = scorer.get_z_score(dope_score) +- print(">> Normalized DOPE z score: %.3f" % z_score) ++ print((">> Normalized DOPE z score: %.3f" % z_score)) + return z_score + + def assess_normalized_dopehr(self): +@@ -351,7 +351,7 @@ + dope_score = sel.assess_dopehr() + scorer = normalized_dope.DOPEHRScorer(self) + z_score = scorer.get_z_score(dope_score) +- print(">> Normalized DOPE-HR z score: %.3f" % z_score) ++ print((">> Normalized DOPE-HR z score: %.3f" % z_score)) + return z_score + + def get_normalized_dope_profile(self): +--- modeller-9.25/modlib/modeller/model_topology.py (original) ++++ modeller-9.25/modlib/modeller/model_topology.py (refactored) +@@ -50,7 +50,7 @@ + self.check_args = args + def __iter__(self): + return self +- def next(self): ++ def __next__(self): + while True: + atoms = self.__int_next() + if self.check_func is None \ +@@ -82,7 +82,7 @@ + self.check_args = args + def __iter__(self): + return self +- def next(self): ++ def __next__(self): + while True: + atoms = self.__int_next() + if self.check_func is None \ +--- modeller-9.25/modlib/modeller/physical.py (original) ++++ modeller-9.25/modlib/modeller/physical.py (refactored) +@@ -31,7 +31,7 @@ + def __init__(self, default=1.0, **keys): + self._default = default + self._dict = {} +- for (term,val) in keys.items(): ++ for (term,val) in list(keys.items()): + term = eval("%s" % term) + self[term] = val + +--- modeller-9.25/modlib/modeller/salign.py (original) ++++ modeller-9.25/modlib/modeller/salign.py (refactored) +@@ -38,8 +38,8 @@ + return aln.salign(auto_overhang=True, overhang_auto_limit=5, + overhang_factor=1, **keys) + except modeller.ModellerError: +- print("SALIGN with auto_overhang failed: %s" \ +- % str(sys.exc_info()[1])) ++ print(("SALIGN with auto_overhang failed: %s" \ ++ % str(sys.exc_info()[1]))) + print("Retrying without auto_overhang") + return aln.salign(**keys) + +@@ -118,13 +118,13 @@ + self.qscore = res.qscorepct + self.aln.write(file=output_aln_file, alignment_format='PIR') + better = True +- print("Qlty scrs %g\t%g\t%g" % (open_penalty, extend_penalty, +- res.qscorepct)) ++ print(("Qlty scrs %g\t%g\t%g" % (open_penalty, extend_penalty, ++ res.qscorepct))) + except modeller.ModellerError: +- print("Set of parameters %s %g %g resulted in the " ++ print(("Set of parameters %s %g %g resulted in the " + "following error\t%s" % (str(weights), open_penalty, + extend_penalty, +- str(sys.exc_info()[1]))) ++ str(sys.exc_info()[1])))) + return better + + +@@ -181,7 +181,7 @@ + best.try_struc_align(opfile, opfile2, fw2, ogp3d, egp3d, + align_block) + +- print("final max quality = %g" % best.qscore) ++ print(("final max quality = %g" % best.qscore)) + + if best.found_struc_align: + aln.clear() +--- modeller-9.25/modlib/modeller/saxsdata.py (original) ++++ modeller-9.25/modlib/modeller/saxsdata.py (refactored) +@@ -206,7 +206,7 @@ + try: + fh = open(saxsfilename,'r') + except: +- print("file "+saxsfilename+" not found :(") ++ print(("file "+saxsfilename+" not found :(")) + return + fh.close() + ns = 0 +@@ -225,8 +225,8 @@ + s_low = s_min - .001 + if (not s_hi): + s_hi = s_max + .001 +- print("s_min=%s, s_max=%s" % (str(s_min), str(s_max))) +- print("s_low=%s, s_hi=%s" % (str(s_low), str(s_hi))) ++ print(("s_min=%s, s_max=%s" % (str(s_min), str(s_max)))) ++ print(("s_low=%s, s_hi=%s" % (str(s_low), str(s_hi)))) + self.ini_saxs(atmsel, + filename=formfacfilename, + s_min=s_min, s_max=s_max, maxs=ns, nmesh=ns, natomtyp=natomtyp, +--- modeller-9.25/modlib/modeller/selection.py (original) ++++ modeller-9.25/modlib/modeller/selection.py (refactored) +@@ -23,7 +23,7 @@ + return self.mdl.atoms[obj - 1] + else: + def next(self): +- obj = self.seliter.next() ++ obj = next(self.seliter) + return self.mdl.atoms[obj - 1] + + class selection(object): +@@ -52,7 +52,7 @@ + :rtype: list of ints + """ + if sys.version_info[:2] == (2,3): +- keys = self.__selection.keys() ++ keys = list(self.__selection.keys()) + keys.sort() + else: + keys = sorted(self.__selection.keys()) +@@ -722,9 +722,9 @@ + def assess(self, assessor, output='SHORT NO_REPORT', **vars): + """Assess with the given assessor object + (e.g. :class:`soap_loop.Scorer`).""" +- print(">> Model assessment by %s" % assessor.name) ++ print((">> Model assessment by %s" % assessor.name)) + molpdf, terms = assessor._assess(self, output=output, **vars) +- print("%s : %12.6f" % (assessor.name, molpdf)) ++ print(("%s : %12.6f" % (assessor.name, molpdf))) + return molpdf + + def _dope_energy(self, gprsr, name, output='SHORT NO_REPORT', +@@ -733,7 +733,7 @@ + nonbond_spline=1.), **vars): + """Internal function to do DOPE or DOPE-HR assessment""" + mdl = self.__mdl +- print(">> Model assessment by %s potential" % name) ++ print((">> Model assessment by %s potential" % name)) + edat = self.get_dope_energy_data() + old_gprsr = mdl.group_restraints + mdl.group_restraints = gprsr +@@ -744,7 +744,7 @@ + **vars) + finally: + mdl.group_restraints = old_gprsr +- print("%s score : %12.6f" % (name, molpdf)) ++ print(("%s score : %12.6f" % (name, molpdf))) + return molpdf + + def debug_function(self, residue_span_range=(0, 99999), +--- modeller-9.25/modlib/modeller/test.py (original) ++++ modeller-9.25/modlib/modeller/test.py (refactored) +@@ -2,7 +2,7 @@ + import modeller + import math + try: +- from cStringIO import StringIO ++ from io import StringIO + except ImportError: + from io import StringIO + import sys +@@ -150,7 +150,7 @@ + diff = abs(num1 - num2) + if msg is None: + msg = "%f != %f within %g" % (num1, num2, tolerance) +- self.assert_(diff < tolerance, msg) ++ self.assertTrue(diff < tolerance, msg) + + def run_capture_stdout(self, method, *args, **keys): + """Run a method and capture its standard output. Returns both the +--- modeller-9.25/modlib/modeller/automodel/automodel.py (original) ++++ modeller-9.25/modlib/modeller/automodel/automodel.py (refactored) +@@ -203,13 +203,13 @@ + + def write_ok_summary(self, all, modeltyp): + """Print out a summary of all successfully generated models""" +- print("\n>> Summary of successfully produced %s:" % modeltyp) +- fields = [x for x in all[0].keys() if x.endswith(' score')] ++ print(("\n>> Summary of successfully produced %s:" % modeltyp)) ++ fields = [x for x in list(all[0].keys()) if x.endswith(' score')] + fields.sort() + fields = ['molpdf'] + fields + header = '%-25s ' % 'Filename' + " ".join(['%14s' % x for x in fields]) + print(header) +- print('-' * len(header)) ++ print(('-' * len(header))) + for mdl in all: + text = '%-25s' % mdl['name'] + for field in fields: +@@ -222,9 +222,9 @@ + + def write_failure_summary(self, all, modeltyp): + """Print out a summary of all failed models""" +- print("\n>> Summary of failed %s:" % modeltyp) ++ print(("\n>> Summary of failed %s:" % modeltyp)) + for mdl in all: +- print("%-25s %s" % (mdl['name'], mdl['failure'])) ++ print(("%-25s %s" % (mdl['name'], mdl['failure']))) + print('') + + def rd_restraints(self): +@@ -692,8 +692,8 @@ + elif atmsel.get_model() is not self: + raise ModellerError("selection is defined on the wrong model") + elif len(atmsel) < len(self.atoms): +- print("%d (of %d total) atoms selected for optimization" \ +- % (len(atmsel), len(self.atoms))) ++ print(("%d (of %d total) atoms selected for optimization" \ ++ % (len(atmsel), len(self.atoms)))) + return atmsel + + def mkhomcsr(self, atmsel, aln): +@@ -774,9 +774,9 @@ + selstd = selection(self).only_std_residues() + selca = selstd.only_atom_types('CA') + +- print("%d atoms in HETATM/BLK residues constrained\n" % len(selhet) \ ++ print(("%d atoms in HETATM/BLK residues constrained\n" % len(selhet) \ + + "to protein atoms within %.2f angstroms\n" % bond_distance \ +- + "and protein CA atoms within %.2f angstroms" % ca_distance) ++ + "and protein CA atoms within %.2f angstroms" % ca_distance)) + # Build the bonds first; this avoids duplicated CA-ligand bonds since + # make_distance() will not build restraints that are already on the + # nonbond exclusion list +@@ -823,8 +823,8 @@ + selhet = selhet.only_no_topology() + + # Intra-residue: +- print("%d atoms in residues without defined topology\n" % len(selhet) \ +- + "constrained to be rigid bodies") ++ print(("%d atoms in residues without defined topology\n" % len(selhet) \ ++ + "constrained to be rigid bodies")) + rsr = self.restraints + rsr.make_distance(selhet, selhet, aln=aln, + distance_rsr_model=7, maximal_distance=10.0, +@@ -898,8 +898,8 @@ + print("\nThe following CHARMM atom type assignments were made:") + print(" Atom Old type New type") + for atom, old_type, new_type in zip(sel, old_types, new_types): +- print(" %-20s %-15s %-15s" +- % (str(atom), fmt_typ(old_type), fmt_typ(new_type))) ++ print((" %-20s %-15s %-15s" ++ % (str(atom), fmt_typ(old_type), fmt_typ(new_type)))) + + def select_atoms(self): + """Select atoms to be optimized in the model building procedure. By +--- modeller-9.25/modlib/modeller/automodel/generate.py (original) ++++ modeller-9.25/modlib/modeller/automodel/generate.py (refactored) +@@ -88,11 +88,11 @@ + to_rebuild.append(r) + _unbuild_ring(r, ring_atoms + extra_atoms) + if len(to_rebuild) > 0: +- print("The following %d residues contain 6-membered rings with " ++ print(("The following %d residues contain 6-membered rings with " + "poor geometries\nafter transfer from templates. Rebuilding " + "rings from internal coordinates:\n %s" \ + % (len(to_rebuild), +- "\n ".join([str(r) for r in to_rebuild]))) ++ "\n ".join([str(r) for r in to_rebuild])))) + mdl.build(initialize_xyz=False, build_method='INTERNAL_COORDINATES') + + def read_xyz(mdl, aln): +--- modeller-9.25/modlib/modeller/automodel/loopmodel.py (original) ++++ modeller-9.25/modlib/modeller/automodel/loopmodel.py (refactored) +@@ -105,7 +105,7 @@ + lendef = len(self._defined_indices) + if lenall > lendef: + s = selection(self) - s +- print(""" ++ print((""" + The following %d atoms were not found in the input model's non-loop region, + and were added automatically by Modeller in order to determine correct + interactions between the loop and the rest of the protein: +@@ -115,7 +115,7 @@ + rest of the protein may exist (note, however, that the score of the loop does + not include protein-protein internal interactions, so will not be adversely + affected by any clashes).""" \ +-% (lenall - lendef, ", ".join([repr(a) for a in s]))) ++% (lenall - lendef, ", ".join([repr(a) for a in s])))) + + if self.loop.write_defined_only: + print(""" +@@ -406,7 +406,7 @@ + elif len(atmsel.only_no_topology()) > 0: + raise ModellerError("some selected residues have no topology") + else: +- print("%d atoms selected for loop refinement" % len(atmsel)) ++ print(("%d atoms selected for loop refinement" % len(atmsel))) + return atmsel + + def optimize_loop(self, atmsel, sched, actions): +--- modeller-9.25/modlib/modeller/mmcif/writer.py (original) ++++ modeller-9.25/modlib/modeller/mmcif/writer.py (refactored) +@@ -4,7 +4,7 @@ + # which works as far back as 2.3, so imports need to be protected by a + # version check + +-from __future__ import print_function ++ + import sys + import textwrap + +@@ -12,7 +12,7 @@ + if sys.version_info[0] >= 3: + _long_type = int + else: +- _long_type = long ++ _long_type = int + + class _LineWriter(object): + def __init__(self, writer, line_len=80): +--- modeller-9.25/modlib/modeller/optimizers/builtin_optimizer.py (original) ++++ modeller-9.25/modlib/modeller/optimizers/builtin_optimizer.py (refactored) +@@ -9,7 +9,7 @@ + # delete the key entirely, as __getstate__ must return a non-empty + # dict in order for our __setstate__ method to be called). + d = self.__dict__.copy() +- for key in self.__dict__.keys(): ++ for key in list(self.__dict__.keys()): + if key.endswith("_modpt") or key.endswith("__optpt"): + d[key] = None + return d +@@ -21,7 +21,7 @@ + vars = params.copy() + self._update_params(vars, ok_keys, extravars) + for key in ok_keys: +- if key not in vars.keys() \ ++ if key not in list(vars.keys()) \ + and key not in ("edat", "libs", "actions", "schedule_scale"): + raise ValueError("a value must be given for %s" % key) + +--- modeller-9.25/modlib/modeller/optimizers/optimizer.py (original) ++++ modeller-9.25/modlib/modeller/optimizers/optimizer.py (refactored) +@@ -10,7 +10,7 @@ + return self.atmsel + + def _update_params(self, params, ok_keys, vars): +- for key in vars.keys(): ++ for key in list(vars.keys()): + if key in ok_keys: + params[key] = vars[key] + else: +--- modeller-9.25/modlib/modeller/parallel/data_types.py (original) ++++ modeller-9.25/modlib/modeller/parallel/data_types.py (refactored) +@@ -3,7 +3,7 @@ + import sys + + try: +- import cPickle as pickle ++ import pickle as pickle + except ImportError: + import pickle + +--- modeller-9.25/modlib/modeller/parallel/job.py (original) ++++ modeller-9.25/modlib/modeller/parallel/job.py (refactored) +@@ -106,7 +106,7 @@ + if id and id in pending_slaves: + slave = pending_slaves.pop(id) + connected_slaves[id] = slave +- print("Identified slave %s " % str(slave)) ++ print(("Identified slave %s " % str(slave))) + slave.accept_connection(sock) + slave.set_directory(self.cwd) + if sys.path[0] != '': +@@ -117,7 +117,7 @@ + return slave + elif id and id in connected_slaves: + slave = connected_slaves[id] +- print("Reconnect from slave %s " % str(slave)) ++ print(("Reconnect from slave %s " % str(slave))) + slave.accept_connection(sock) + else: + print("Ignoring request from unknown slave") +@@ -159,7 +159,7 @@ + """Run all tasks and return all the results, in the same order that they + were submitted, when all the jobs have completed.""" + tasks = self.tasks[:] +- print("Running %d tasks on %d slaves" % (len(tasks), len(self))) ++ print(("Running %d tasks on %d slaves" % (len(tasks), len(self)))) + self.push_tasks_to_slaves() + while True: + try: +@@ -174,7 +174,7 @@ + def yield_tasks_unordered(self): + """Run all tasks and return their results (as a generator), in + whatever order they complete.""" +- print("Running %d tasks on %d slaves" % (len(self.tasks), len(self))) ++ print(("Running %d tasks on %d slaves" % (len(self.tasks), len(self)))) + self.push_tasks_to_slaves() + while True: + try: +@@ -215,7 +215,7 @@ + task = obj.task_results() + if task: + # The slave completed its task +- print("%s on %s completed" % (str(task), str(obj))) ++ print(("%s on %s completed" % (str(task), str(obj)))) + if len(self.tasks) > 0: + obj.run_task(self.tasks.pop(0)) + return task +@@ -225,14 +225,14 @@ + except (NetworkError, TaskSetupError): + self.kill_slaves((obj,), sys.exc_info()[1]) + else: +- print("Warning: slave %s reports data, but is not running a task" \ +- % str(obj)) ++ print(("Warning: slave %s reports data, but is not running a task" \ ++ % str(obj))) + + def kill_slaves(self, slaves, err=""): + if err != "": + err = "(%s) " % err + for s in slaves: +- print("%s failed %s- removing from %s" % (s, err, self)) ++ print(("%s failed %s- removing from %s" % (s, err, self))) + task = s.kill() + if task: + self.tasks.append(task) +@@ -248,8 +248,8 @@ + timedout = [a for a in self if a.running_task() and \ + a.contact_timeout(self.heartbeat_timeout)] + if len(timedout) > 0: +- print("Did not hear from slaves %s in %d seconds" % \ +- (str(timedout), self.heartbeat_timeout)) ++ print(("Did not hear from slaves %s in %d seconds" % \ ++ (str(timedout), self.heartbeat_timeout))) + self.kill_slaves(timedout) + + def push_tasks_to_slaves(self): +@@ -264,8 +264,8 @@ + slave.run_task(t) + # If a network error occurred, kill the slave and requeue the task + except socket.error: +- print("slave %s failed on run task with %s; removing from job" \ +- % (slave, sys.exc_info()[1])) ++ print(("slave %s failed on run task with %s; removing from job" \ ++ % (slave, sys.exc_info()[1]))) + slave.kill() + self.tasks.insert(0, t) + self.expand_for_tasks() +--- modeller-9.25/modlib/modeller/parallel/myspawn.py (original) ++++ modeller-9.25/modlib/modeller/parallel/myspawn.py (refactored) +@@ -10,7 +10,7 @@ + ``output``.""" + + fp = open(output, "w") +- print("%s >& %s" % (cmd, output)) ++ print(("%s >& %s" % (cmd, output))) + if sys.platform == 'win32': + _myspawn_win32(cmd, fp) + else: +@@ -27,4 +27,4 @@ + # Ignore Windows "file not found" errors, so that behavior is consistent + # between Unix and Windows + except WindowsError: +- print("WindowsError: %s (ignored)" % sys.exc_info()[1]) ++ print(("WindowsError: %s (ignored)" % sys.exc_info()[1])) +--- modeller-9.25/modlib/modeller/parallel/sge_qsub_array.py (original) ++++ modeller-9.25/modlib/modeller/parallel/sge_qsub_array.py (refactored) +@@ -36,7 +36,7 @@ + outlines = output.readlines() + output.close() + for line in outlines: +- print(line.rstrip('\r\n')) ++ print((line.rstrip('\r\n'))) + a.require_clean_exit() + self._set_jobid(outlines) + +--- modeller-9.25/modlib/modeller/parallel/sge_qsub_slave.py (original) ++++ modeller-9.25/modlib/modeller/parallel/sge_qsub_slave.py (refactored) +@@ -38,7 +38,7 @@ + qsub = "qsub -S /bin/sh -o '%s' -N '%s' %s %s" % \ + (output, name, self.standard_options, self._options) + cmd = "%s -slave %s" % (path, id) +- print("%s | %s" % (cmd, qsub)) ++ print(("%s | %s" % (cmd, qsub))) + a = MyPopen4(qsub) + (input, output) = (a.stdin, a.stdout) + input.write(cmd + '\n') +@@ -46,7 +46,7 @@ + outlines = output.readlines() + output.close() + for line in outlines: +- print(line.rstrip('\r\n')) ++ print((line.rstrip('\r\n'))) + a.require_clean_exit() + self._set_jobid(outlines) + +--- modeller-9.25/modlib/modeller/parallel/slaveloop.py (original) ++++ modeller-9.25/modlib/modeller/parallel/slaveloop.py (refactored) +@@ -51,14 +51,14 @@ + master.send_data(communicator.ErrorWrapper(detail)) + except socket.error: + detail2 = sys.exc_info()[1] +- print("Warning: ignored exception " + str(detail2) \ ++ print(("Warning: ignored exception " + str(detail2) \ + + " when trying to send error state " \ +- + str(detail) + " back to master") ++ + str(detail) + " back to master")) + raise detail + raise + + def run(self): +- print("Slave startup: connect to master at %s" % self.addr) ++ print(("Slave startup: connect to master at %s" % self.addr)) + (host, port, identifier) = self.addr.split(":", 2) + port = int(port) + lock = threading.Lock() +--- modeller-9.25/modlib/modeller/top_interpreter/__init__.py (original) ++++ modeller-9.25/modlib/modeller/top_interpreter/__init__.py (refactored) +@@ -65,7 +65,7 @@ + if len(line) > 0: + try: + self._parse_top_ini_line(line.split(None, 4), vars) +- except TypeError, detail: ++ except TypeError as detail: + mod_log_write("read_top__E> " + str(detail)) + mod_log_write(" top.ini line: " + line) + raise +@@ -113,7 +113,7 @@ + self._set_top_vars(vars) + try: + fh = self._open_include_file(self.variables['include_file']) +- except IOError, detail: ++ except IOError as detail: + mod_log_write("runlines__E> " + str(detail)) + mod_log_write(" TOP Command line: " + line) + raise +@@ -160,7 +160,7 @@ + indxca = self._run_top_cmd(cmd, indxca, lines, callstack, + subrout) + _modeller.mod_top_post() +- except (IndexError, SyntaxError, TypeError), detail: ++ except (IndexError, SyntaxError, TypeError) as detail: + mod_log_write("runlines__E> " + str(detail)) + mod_log_write(" TOP Command line: " + line) + raise +--- modeller-9.25/modlib/modeller/top_interpreter/topcmds.py (original) ++++ modeller-9.25/modlib/modeller/top_interpreter/topcmds.py (refactored) +@@ -19,7 +19,7 @@ + if not isinstance(vars, (list, tuple)): + vars = (vars,) + for var in vars: +- if keys.has_key(var): ++ if var in keys: + args.append(keys[var]) + else: + args.append(self.vars[var]) +--- modeller-9.25/modlib/modeller/top_interpreter/util.py (original) ++++ modeller-9.25/modlib/modeller/top_interpreter/util.py (refactored) +@@ -1,7 +1,7 @@ + import _modeller + + def set_topvars(topvardict, vars, topini): +- for name in topvardict.keys(): ++ for name in list(topvardict.keys()): + value = topvardict[name] + if value is None: + continue +--- modeller-9.25/modlib/modeller/top_interpreter/variables.py (original) ++++ modeller-9.25/modlib/modeller/top_interpreter/variables.py (refactored) +@@ -32,11 +32,11 @@ + def __init__(self, topcmds): + self._topcmds = topcmds + self._topvars = {} +- for var in self._deftops.keys(): ++ for var in list(self._deftops.keys()): + self._ourvars[var] = self._deftops[var] +- for var in self._edat_members.keys(): ++ for var in list(self._edat_members.keys()): + self._ourvars[var] = self._edat_members[var] +- for var in self._io_members.keys(): ++ for var in list(self._io_members.keys()): + self._ourvars[var] = self._io_members[var] + + def __setitem__(self, key, value): +--- modeller-9.25/modlib/modeller/util/modobject.py (original) ++++ modeller-9.25/modlib/modeller/util/modobject.py (refactored) +@@ -1,8 +1,8 @@ + class modobject(object): + def __setattr__(self, name, val): + if name not in dir(self): +- print("runcmd_____W>: creation of new member '%s' in %s: " +- "possible typo!" % (name, str(self))) ++ print(("runcmd_____W>: creation of new member '%s' in %s: " ++ "possible typo!" % (name, str(self)))) + object.__setattr__(self, name, val) + + def __getstate__(self): +@@ -11,7 +11,7 @@ + # delete the key entirely, as __getstate__ must return a non-empty + # dict in order for our __setstate__ method to be called). + d = self.__dict__.copy() +- for key in self.__dict__.keys(): ++ for key in list(self.__dict__.keys()): + if key.endswith("_modpt"): + d[key] = None + return d +--- modeller-9.25/modlib/modeller/util/modutil.py (original) ++++ modeller-9.25/modlib/modeller/util/modutil.py (refactored) +@@ -17,7 +17,7 @@ + else: + return indx + elif isinstance(indx, slice): +- return range(*indx.indices(len(seqtype))) ++ return list(range(*indx.indices(len(seqtype)))) + elif lookup_func is not None: + args = lookup_args + (indx,) + int_indx = lookup_func(*args) diff --git a/sci-chemistry/modeller/modeller-9.19.ebuild b/sci-chemistry/modeller/modeller-9.19.ebuild deleted file mode 100644 index 0d29c3843..000000000 --- a/sci-chemistry/modeller/modeller-9.19.ebuild +++ /dev/null @@ -1,145 +0,0 @@ -# Copyright 1999-2018 Gentoo Foundation -# Distributed under the terms of the GNU General Public License v2 - -EAPI=6 - -PYTHON_COMPAT=( python2_7 ) - -inherit distutils-r1 eutils multilib versionator - -DESCRIPTION="Homology or comparative modeling of protein three-dimensional structures" -HOMEPAGE="http://salilab.org/modeller/" -SRC_URI="http://salilab.org/${PN}/${PV}/${P}.tar.gz" - -LICENSE="modeller" -KEYWORDS="~amd64 ~x86 ~amd64-linux ~x86-linux" -IUSE="doc examples" -SLOT="0" - -RESTRICT="mirror" - -DEPEND=">=dev-lang/swig-1.3" -RDEPEND="" - -INPATH="${EPREFIX}"/opt/modeller${ver} - -QA_PREBUILT="/opt/*" - -pkg_setup() { - case ${ARCH} in - x86) - EXECTYPE="i386-intel8";; - amd64) - EXECTYPE="x86_64-intel8";; - *) - die "Your arch "${ARCH}" does not appear supported at this time.";; - esac -} - -python_prepare_all(){ - sed "s:i386-intel8:${EXECTYPE}:g" -i src/swig/setup.py || die - distutils-r1_python_prepare_all -} - -python_compile(){ - cd src/swig || die - swig -python -keyword -nodefaultctor -nodefaultdtor -noproxy modeller.i || die - distutils-r1_python_compile -} - -python_install() { - cd src/swig || die - distutils-r1_python_install -} - -python_install_all(){ - cd "${S}" || die - sed \ - -e "/^EXECUTABLE_TYPE/s:xxx:${EXECTYPE}:g" \ - -e "/MODINSTALL/s:xxx:\"${INPATH}\":g" \ - -i bin/modscript || die - - sed -e "s;@TOPDIR\@;\"${INPATH}\";" \ - -e "s;@EXETYPE\@;${EXECTYPE};" \ - bin/modpy.sh.in > "${T}/modpy.sh" - - insinto ${INPATH} - doins -r modlib - python_foreach_impl python_domodule modlib/modeller - - insinto ${INPATH}/bin - doins -r bin/{lib,*top} - - exeinto ${INPATH}/bin - doexe bin/{modscript,mod${PV}_${EXECTYPE}} "${T}"/modpy.sh - - python_foreach_impl python_doscript bin/modslave.py - dosym ${INPATH}/bin/modscript /opt/bin/mod${PV} - dosym ${INPATH}/bin/modpy.sh /opt/bin/modpy.sh - - exeinto ${INPATH}/lib/${EXECTYPE}/ - doexe lib/${EXECTYPE}/lib* - dosym libmodeller.so.8 ${INPATH}/lib/${EXECTYPE}/libmodeller.so - dosym ../../${INPATH}/lib/${EXECTYPE}/libmodeller.so.8 /usr/$(get_libdir)/libmodeller.so.8 - - use doc && HTML_DOCS=( doc/. ) - distutils-r1_python_install_all - - if use examples; then - insinto /usr/share/${PN}/ - doins -r examples - fi - - insinto /etc/revdep-rebuild - cat >> "${T}"/40-${PN} <<- EOF - SEARCH_DIRS_MASK="${EPREFIX}/opt/modeller/lib/" - EOF - doins "${T}"/40-${PN} -} - -pkg_postinst() { - if [[ ! -e "${INPATH}/modlib/modeller/config.py" ]]; then - echo install_dir = \"${INPATH}/\"> ${INPATH}/modlib/modeller/config.py - fi - - if grep -q license ${INPATH}/modlib/modeller/config.py; then - einfo "A license key file is already present in ${IN_PATH}/modlib/modeller/config.py" - else - ewarn "Obtain a license Key from" - ewarn "http://salilab.org/modeller/registration.html" - ewarn "And run this before using modeller:" - ewarn "emerge --config =${CATEGORY}/${PF}" - ewarn "That way you can [re]enter your license key." - fi -} - -pkg_postrm() { - ewarn "This package leaves a license Key file in ${INPATH}/modlib/modeller/config.py" - ewarn "that you need to remove to completely get rid of modeller." -} - -pkg_config() { - ewarn "Your license key is NOT checked for validity here." - ewarn " Make sure you type it in correctly." - eerror "If you CTRL+C out of this, modeller will not run!" - while true - do - einfo "Please enter your license key:" - read license_key1 - einfo "Please re-enter your license key:" - read license_key2 - if [[ "$license_key1" == "" ]] - then - echo "You entered a blank license key. Try again." - else - if [[ "$license_key1" == "$license_key2" ]] - then - echo license = '"'$license_key1'"' >> "${INPATH}/modlib/modeller/config.py" - einfo "Thank you!" - break - else - eerror "Your license key entries do not match. Try again." - fi - fi - done -} diff --git a/sci-chemistry/modeller/modeller-9.12-r3.ebuild b/sci-chemistry/modeller/modeller-9.25.ebuild index de64378e1..cf3af567e 100644 --- a/sci-chemistry/modeller/modeller-9.12-r3.ebuild +++ b/sci-chemistry/modeller/modeller-9.25.ebuild @@ -1,15 +1,15 @@ -# Copyright 1999-2016 Gentoo Foundation +# Copyright 1999-2020 Gentoo Authors # Distributed under the terms of the GNU General Public License v2 -EAPI=6 +EAPI=7 -PYTHON_COMPAT=( python2_7 ) +PYTHON_COMPAT=( python3_{6,7,8,9} ) -inherit distutils-r1 eutils multilib versionator +inherit distutils-r1 eutils multilib DESCRIPTION="Homology or comparative modeling of protein three-dimensional structures" -HOMEPAGE="http://salilab.org/modeller/" -SRC_URI="http://salilab.org/${PN}/${PV}/${P}.tar.gz" +HOMEPAGE="https://salilab.org/modeller/" +SRC_URI="https://salilab.org/${PN}/${PV}/${P}.tar.gz" LICENSE="modeller" KEYWORDS="~amd64 ~x86 ~amd64-linux ~x86-linux" @@ -25,6 +25,8 @@ INPATH="${EPREFIX}"/opt/modeller${ver} QA_PREBUILT="/opt/*" +PATCHES=( "${FILESDIR}/${P}-convert2to3.patch" ) + pkg_setup() { case ${ARCH} in x86) @@ -38,6 +40,8 @@ pkg_setup() { python_prepare_all(){ sed "s:i386-intel8:${EXECTYPE}:g" -i src/swig/setup.py || die + rm -rf modlib/modeller/python_library || die + sed -i '1 i\#!/usr/bin/python' bin/modslave.py distutils-r1_python_prepare_all } |