A collection of Python library code for building Python applications.

Overview

Abseil Python Common Libraries

This repository is a collection of Python library code for building Python applications. The code is collected from Google's own Python code base, and has been extensively tested and used in production.

Features

  • Simple application startup
  • Distributed commandline flags system
  • Custom logging module with additional features
  • Testing utilities

Getting Started

Installation

To install the package, simply run:

pip install absl-py

Or install from source:

python setup.py install

Running Tests

To run Abseil tests, you can clone the git repo and run bazel:

git clone https://github.com/abseil/abseil-py.git
cd abseil-py
bazel test absl/...

Example Code

Please refer to smoke_tests/sample_app.py as an example to get started.

Documentation

See the Abseil Python Developer Guide.

Future Releases

The current repository includes an initial set of libraries for early adoption. More components and interoperability with Abseil C++ Common Libraries will come in future releases.

License

The Abseil Python library is licensed under the terms of the Apache license. See LICENSE for more information.

Comments
  • abseil interferes with python logging

    abseil interferes with python logging

    I have a script where I'm importing a module that internally uses abseil logging. The rest of our code base is using standard python logging. This is leading to a situation where importing that module is interfering with the rest of the code base using standard logging and causing lost log messages.

    See here for a description of the issue: https://github.com/tensorflow/hub/issues/263

    Have others run into this issue before?

    opened by matteby 19
  • Issues pickling/unpickling Flags with dill

    Issues pickling/unpickling Flags with dill

    I came across this issue when using the save_main_session in Apache Beam 2.4.0 with absl.flags (absl-py version 0.2.1). save_main_session pickles then unpickles the variables in the main session, flags.FLAGS included.

    The following error is raised:

    Traceback (most recent call last):
      File "test.py", line 46, in <module>
        app.run(main)
      File "venv/local/lib/python2.7/site-packages/absl/app.py", line 274, in run
        _run_main(main, args)
      File "venv/local/lib/python2.7/site-packages/absl/app.py", line 238, in _run_main
        sys.exit(main(argv))
      File "test.py", line 43, in main
        _ = output | beam.io.WriteToText(FLAGS.output_file)
      File "venv/local/lib/python2.7/site-packages/apache_beam/pipeline.py", line 389, in __exit__
        self.run().wait_until_finish()
      File "venv/local/lib/python2.7/site-packages/apache_beam/pipeline.py", line 369, in run
        self.to_runner_api(), self.runner, self._options).run(False)
      File "venv/local/lib/python2.7/site-packages/apache_beam/pipeline.py", line 379, in run
        pickler.dump_session(os.path.join(tmpdir, 'main_session.pickle'))
      File "venv/local/lib/python2.7/site-packages/apache_beam/internal/pickler.py", line 242, in dump_session
        dill.load_session(file_path)
      File "venv/local/lib/python2.7/site-packages/dill/dill.py", line 363, in load_session
        module = unpickler.load()
      File "/usr/lib/python2.7/pickle.py", line 864, in load
        dispatch[key](self)
      File "/usr/lib/python2.7/pickle.py", line 1221, in load_build
        setstate = getattr(inst, "__setstate__", None)
      File "venv/local/lib/python2.7/site-packages/absl/flags/_flagvalues.py", line 468, in __getattr__
        fl = self._flags()
      File "venv/local/lib/python2.7/site-packages/absl/flags/_flagvalues.py", line 141, in _flags
        return self.__dict__['__flags']
    KeyError: '__flags'
    

    Example code:

    """
    Demonstrating incompatibility between absl.flags and
    save_main_session in Apache Beam's Python SDK.
    """
    import re
    import six
    import apache_beam as beam
    
    from absl import app
    from absl import flags
    
    
    FLAGS = flags.FLAGS
    
    flags.DEFINE_string(
        'output_file',
        'output.txt',
        help='Output filename.')
    
    def main(argv):
      del argv # Unused.
    
      pipeline_options = beam.pipeline.PipelineOptions()
      # Uncomment the next line to break things.
      #pipeline_options.view_as(beam.pipeline.SetupOptions).save_main_session = True
    
      with beam.Pipeline(options=pipeline_options) as p:
        lines = p | beam.Create(
          ['This is a test of compatibility issues between absl and beam.',
           'Since absl.flags cannot be pickled correctly, it cannot be used',
           'with the save_main_session pipeline option.'])
    
        counts = (
            lines
            | 'Split' >> (beam.FlatMap(lambda x: re.findall(r'[A-Za-z\']+', x))
                          .with_output_types(six.text_type))
            | 'PairWithOne' >> beam.Map(lambda x: (x, 1))
            | 'GroupAndSum' >> beam.CombinePerKey(sum))
    
        output = counts | 'Format' >> beam.Map(
          lambda (word, count): '%s: %s' % (word, count))
    
        _ = output | beam.io.WriteToText(FLAGS.output_file)
    
    if __name__ == '__main__':
      app.run(main)
    
    opened by rasmi 17
  • pip install error when old setuptools versions used

    pip install error when old setuptools versions used

    python 3.6.7, install tensorflow, here is log:

    Collecting absl-py>=0.1.6 (from tensorflow->-r pip_requirenents.txt (line 21)) Using cached https://files.pythonhosted.org/packages/fa/ef/1fa0376563b1e0495301ada8e881d88b7ebfda433f6b31f44447fe6ef795/absl-py-0.6.0.tar.gz Complete output from command python setup.py egg_info: /Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/distutils/dist.py:261: UserWarning: Unknown distribution option: 'long_description_content_type' warnings.warn(msg) error in absl-py setup command: 'install_requires' must be a string or list of strings containing valid project/version requirement specifiers; Expected version spec in enum34; python_version<='3.4' at ; python_version<='3.4'

    opened by o0starshine0o 14
  • how to write log into file

    how to write log into file

    Hi, I am trying to write log into file directly instead of showing in command window. I have seen following issues about it https://github.com/abseil/abseil-py/issues/83 https://github.com/abseil/abseil-py/issues/111

    I tried them but I cant see anything in the file.

    My code is

    import os
    from absl import logging
    if not os.path.exists('/opt/log/'):
         os.makedirs('/opt/log/')
    logging.get_absl_handler().use_absl_log_file('absl_logging', '/opt/log/')
    
    logging.info('test')
    logging.debug('test debug')
    

    I cant see anything in that file though file was created

    opened by akter-sust 12
  • How should I run bazel tests ?

    How should I run bazel tests ?

    Hi there,

    I added the WORKSPACE file from GitHub into the package published on pypi, but when I run

    bazel test absl
    

    It says:

    ERROR: no targets found beneath 'absl'.
    INFO: Elapsed time: 0.105s
    ERROR: Couldn't start the build. Unable to run tests.
    

    Thanks

    opened by eLvErDe 10
  • assertSameStructure with dict vs defaultdict

    assertSameStructure with dict vs defaultdict

    When trying to use assertSameStructure to compar a dict to a defaultdict, it throws an error. This is due to the direct type comparison here https://github.com/abseil/abseil-py/blob/master/absl/testing/absltest.py#L1219

    Not sure if it's worth adding another exception similar to int vs long. Feel free to close if this is WAI

    opened by EhsanKia 8
  • How to clean flags ?

    How to clean flags ?

    Hello dear friends,

    A few weeks ago, Tensorflow have moved to this library to manage flags using tf.app.flags. Link to file: https://github.com/tensorflow/tensorflow/blob/r1.5/tensorflow/python/platform/flags.py

    I can't manage to find any way to "reset" the flags state with this library. Is there any way to do this ?

    I would like to remove every flags created and return to a blank state as if it was just created.

    Thanks a lot.

    opened by DEKHTIARJonathan 8
  • AttributeError: module 'absl' has no attribute 'flags'

    AttributeError: module 'absl' has no attribute 'flags'

    Traceback (most recent call last): File "DeepSpeech.py", line 11, in import absl.app File "/home/sehar/venv/lib/python3.6/site-packages/absl/app.py", line 40, in from absl import flags File "/home/sehar/venv/lib/python3.6/site-packages/absl/flags/init.py", line 41, in from absl.flags import _defines File "/home/sehar/venv/lib/python3.6/site-packages/absl/flags/_defines.py", line 31, in from absl.flags import _flagvalues File "/home/sehar/venv/lib/python3.6/site-packages/absl/flags/_flagvalues.py", line 27, in import logging File "/home/sehar/DeepSpeech/logging.py", line 6, in from util.flags import FLAGS File "/home/sehar/DeepSpeech/util/flags.py", line 6, in FLAGS = absl.flags.FLAGS AttributeError: module 'absl' has no attribute 'flags' please help me resolve this issue I am using tensorflow 1.14 gpu based

    opened by sehargul-123 6
  • Fixing enum34 requirement for python versions <= 3.4 in setup.py

    Fixing enum34 requirement for python versions <= 3.4 in setup.py

    Was running into error on Python3.6 and pip 18.1

    error in absl-py setup command: 'install_requires' must be a string or list of strings containing valid project/version requirement specifiers; Expected version spec in enum34;python_version<='3.4' at ;python_version<='3.4'
    

    Using the install_requires and extra_requires fixed my problems, and is ostensibly a better way to do this see reference here.

    cla: yes 
    opened by alexhagen 6
  • Logging disappeared after switching from app.run(main) to main()

    Logging disappeared after switching from app.run(main) to main()

    There are two logging methods in our code:

    import logging
    logging.info('my logging msg')
    

    or

    import logging
    logger = logging.getLogger(__name__)
    logger.setLevel(logging.DEBUG)
    logger.info('my logger msg')
    

    When we first used app.run(main), everything is fine. All the log lines are output in absl.logging format.

    Then we needed to combine absl.flags with argparse, and used your solution in #27 (Let one parser parse "known flags", and the other parse the rest. Example 2) It works great except that we need to run main() instead of app.run(main) And all the logging were gone. So we tried to add absl.logging.use_absl_handler() in __init__.py following #148 Now we are able to see content from logger.xxx in absl.logging format, but not those from logging.xxx no matter it is from python logging or absl logging.

    Did I miss anything from app.run() or not using logging correctly?

    opened by unacao 5
  • Unexpected behavior when using absl-py with python's native logging library

    Unexpected behavior when using absl-py with python's native logging library

    I am seeing unexpected behaviors when using absl-py with a python library that uses python's native logging library.

    Here is a minimal reproduce script:

    from absl import app
    import logging
    
    
    def main(argv):
      logger = logging.getLogger('test_logger')
      logger.setLevel(logging.DEBUG)
      ch = logging.StreamHandler()
      ch.setLevel(logging.DEBUG)
      logger.addHandler(ch)
    
      logger.info('My test message.')
    
    
    if __name__ == '__main__':
      app.run(main)
    

    Here is the output from the above script:

    My test message.
    I0806 13:54:58.868444 140734895885760 python_test.py:11] My test message.
    

    The message is somehow duplicated, one with timestamp, and one without timestamp.

    I don't have control on the third_party python library (that uses python's native logging library), so I cannot switch that library to use absl-py logging.

    Is there anyway to fix or workaround the problem without updating the logging library in the third party python library?

    opened by kqyang 5
  • Accessing C++ flags from Python

    Accessing C++ flags from Python

    opened by jiawen 1
  • argparse_flags.ArgumentParser does not accept --flagfile if there are no flags

    argparse_flags.ArgumentParser does not accept --flagfile if there are no flags

    Minimum repro:

    # foo.py
    import absl.flags.argparse_flags
    import argparse
    # absl.flags.DEFINE_string("do_not_use_flagfile_hack", "", "") # A
    parser = absl.flags.argparse_flags.ArgumentParser()
    parser.add_argument("--foo")
    parser.parse_args()
    
    echo "--foo" > flags.txt
    foo.py --flagfile=flags.txt
    

    The error is:

    foo.py: error: unrecognized arguments: --flagfile=flags.txt
    

    The command would work if I uncomment line A.

    It appears that ArgumentParser only accepts --flagfile if there are some DEFINE_'d strings. This is because of this line:

    https://github.com/abseil/abseil-py/blob/main/absl/flags/argparse_flags.py#L156

        if self._inherited_absl_flags: # <---
          # Handle --flagfile.
          # Explicitly specify force_gnu=True, since argparse behaves like
          # gnu_getopt: flags can be specified after positional arguments.
          args = self._inherited_absl_flags.read_flags_from_files(
              args, force_gnu=True)
    

    --flagfile is only accepted if bool(self._inherited_absl_flags), which is False if there are no DEFINE_d strings.

    opened by jacky8hyf 1
  • absl.flags fails with multiprocessing when using

    absl.flags fails with multiprocessing when using "spawn"

    There's something odd going on with absl.flags and interacting very badly with multiprocessing when using 'spawn' as a start method. This is on MacOS 11.4, using homebrew's version of Python 3.9.6, although it also fails on the system python 3, 3.8.2.

    Given the following code (I'll also atttach it), multifail.py.txt

    """ import absl.flags import absl.app import multiprocessing import time

    absl.flags.DEFINE_integer("delay", 2, "sleep delay") FLAGS = absl.flags.FLAGS

    def worker(n): time.sleep(FLAGS.delay) print(n)

    def main(argv): # "fork" works fine. multiprocessing.set_start_method("spawn") with multiprocessing.Pool(20) as pool: pool.map(worker, range(1000))

    if name == "main": absl.app.run(main) """

    it will fail (inconsistently) with

    multiprocessing.pool.RemoteTraceback: """ Traceback (most recent call last): File "/opt/homebrew/Cellar/[email protected]/3.9.6/Frameworks/Python.framework/Versions/3.9/lib/python3.9/multiprocessing/pool.py", line 125, in worker result = (True, func(*args, **kwds)) File "/opt/homebrew/Cellar/[email protected]/3.9.6/Frameworks/Python.framework/Versions/3.9/lib/python3.9/multiprocessing/pool.py", line 48, in mapstar return list(map(*args)) File "/Users/anthonybaxter/multifail.py", line 10, in worker time.sleep(FLAGS.delay) File "/opt/homebrew/lib/python3.9/site-packages/absl/flags/_flagvalues.py", line 499, in getattr raise _exceptions.UnparsedFlagAccessError(error_message) absl.flags._exceptions.UnparsedFlagAccessError: Trying to access flag --delay before flags were parsed.

    The above exception was the direct cause of the following exception:

    Traceback (most recent call last): File "/Users/anthonybaxter/multifail.py", line 22, in absl.app.run(main) File "/opt/homebrew/lib/python3.9/site-packages/absl/app.py", line 312, in run _run_main(main, args) File "/opt/homebrew/lib/python3.9/site-packages/absl/app.py", line 258, in _run_main sys.exit(main(argv)) File "/Users/anthonybaxter/multifail.py", line 18, in main pool.map(worker, range(1000)) File "/opt/homebrew/Cellar/[email protected]/3.9.6/Frameworks/Python.framework/Versions/3.9/lib/python3.9/multiprocessing/pool.py", line 364, in map return self._map_async(func, iterable, mapstar, chunksize).get() File "/opt/homebrew/Cellar/[email protected]/3.9.6/Frameworks/Python.framework/Versions/3.9/lib/python3.9/multiprocessing/pool.py", line 771, in get raise self._value absl.flags._exceptions.UnparsedFlagAccessError: Trying to access flag --delay before flags were parsed. """

    opened by anthonybaxter 3
  • Abstract test case

    Abstract test case

    Sometimes we have some interface and we would like to write a generic test suite for it, so that concrete implementations just reuse it.

    The problem with Python's unittest (and transitively absltest) is that the TestCase class serves as a "marker" telling the test executor that it should be executed. This is unfortunate, because abstract test suites should not run. Consider this example:

    class FooTest(absltest.TestCase):
    
        @abstractmethod
        def new_foo(self) -> Foo:
            pass
    
        def test_bar(self) -> None:
            foo = self.new_foo()
            self.assertEqual(foo.bar(), "bar")
    
    
    class QuuxTest(FooTest):
    
        def new_foo(self) -> Foo:
            return Quux()
    
    
    class NorfTest(FooTest):
    
        def new_foo(self) -> Foo:
            return Norf()
    

    Here, the test executor will instantiate FooTest, QuuxTest and NorfTest. However, FooTest is abstract and it is not possible to create an instance of it. There are three workarounds for this that I am aware of.

    The first one is to configure the test executor to ignore specific test classes or prefixes (possible in pytest). However, this is awkward and requires modifying external configuration files.

    The second one is described here. Basically, we del the base class once child classes are defined. This feels very wrong and works only if all the concrete test cases are defined in the same module.

    The last one is to use a mixin approach. Instead of making FooTest derive from absltest.TestCase, we "mark" only concrete classes with it:

    class FooTest:
    
        @abstractmethod
        def new_foo(self) -> Foo:
            pass
    
        def test_bar(self) -> None:
            foo = self.new_foo()
            self.assertEqual(foo.bar(), "bar")
    
    
    class QuuxTest(FooTest, absltest.TestCase):
    
        def new_foo(self) -> Foo:
            return Quux()
    
    
    class NorfTest(FooTest, absltest.TestCase):
    
        def new_foo(self) -> Foo:
            return Norf()
    

    The problem here is that it doesn't work with static type checkers: FooTest now doesn't inherit from TestCase but uses methods like self.assertEqual.

    This last solution seems like the only "correct" one except for the mentioned issue. Instead, Abseil could define an abstract test class and make the normal test case class implement it:

    class AbstractTestCase(ABC):
    
        @abstractmethod
        def assertEqual(self, this, that):
          ...
    
        ...
    
    class TestCase(AbstractTestCase):
        ...
    

    Then, it would be possible to inherit from absltest.AbstractTestCase in the abstract test case, making the type checker happy:

    class FooTest(absltest.AbstractTestCase):
    
        @abstractmethod
        def new_foo(self) -> Foo:
            pass
    
        def test_bar(self) -> None:
            foo = self.new_foo()
            self.assertEqual(foo.bar(), "bar")
    
    
    class QuuxTest(FooTest, absltest.TestCase):
    
        def new_foo(self) -> Foo:
            return Quux()
    
    
    class NorfTest(FooTest, absltest.TestCase):
    
        def new_foo(self) -> Foo:
            return Norf()
    
    opened by panhania 6
  • Absl flags pathlib support

    Absl flags pathlib support

    Are there any plans to support a flags.DEFINE_path or something similar that utilizes python's pathlib module to support declaring os.PathLike operations for the default option?

    For context, I often find myself doing the following:

    from absl import app, flags
    from pathlib import Path
    
    FLAGS = flags.FLAGS
    flags.DEFINE_string("filepath", "path/to/some.txt", "Input filepath for program")
    
    def main(argv_):
        # Override FLAGS.filepath with a pathlib.Path version
        FLAGS.filepath = Path(FLAGS.filepath)
        
        # Rest of program uses pathlib for path operations
    
    if __name__ == "__main__":
        app.run(main)
    

    It would be awesome if there was an easy way to define a Path object from the DEFINE_ definition in the first place. If adding such a feature is not feasible, I'm curious how other people are using pathlib with absl.flags as well.

    Thanks!

    opened by bsarden 3
Releases(v1.3.0)
  • v1.3.0(Oct 13, 2022)

    Added

    • (flags) Added a new absl.flags.set_default function that updates the flag default for a provided FlagHolder. This parallels the absl.flags.FlagValues.set_default interface which takes a flag name.
    • (flags) The following functions now also accept FlagHolder instance(s) in addition to flag name(s) as their first positional argument:
      • flags.register_validator
      • flags.validator
      • flags.register_multi_flags_validator
      • flags.multi_flags_validator
      • flags.mark_flag_as_required
      • flags.mark_flags_as_required
      • flags.mark_flags_as_mutual_exclusive
      • flags.mark_bool_flags_as_mutual_exclusive
      • flags.declare_key_flag

    Changed

    • (testing) Assertions assertRaisesWithPredicateMatch and assertRaisesWithLiteralMatch now capture the raised Exception for further analysis when used as a context manager.
    • (testing) TextAndXMLTestRunner now produces time duration values with millisecond precision in XML test result output.
    • (flags) Keyword access to flag_name arguments in the following functions is deprecated. This parameter will be renamed in a future 2.0.0 release.
      • flags.register_validator
      • flags.validator
      • flags.register_multi_flags_validator
      • flags.multi_flags_validator
      • flags.mark_flag_as_required
      • flags.mark_flags_as_required
      • flags.mark_flags_as_mutual_exclusive
      • flags.mark_bool_flags_as_mutual_exclusive
      • flags.declare_key_flag
    Source code(tar.gz)
    Source code(zip)
  • v1.2.0(Jul 18, 2022)

  • v1.1.0(Jun 1, 2022)

    Changed

    • Flag instances now raise an error if used in a bool context. This prevents the occasional mistake of testing an instance for truthiness rather than testing flag.value.
    • absl-py no longer depends on six.
    Source code(tar.gz)
    Source code(zip)
  • v1.0.0(Nov 10, 2021)

    Changed

    • absl-py no longer supports Python 2.7, 3.4, 3.5. All versions have reached end-of-life for more than a year now.
    • New releases will be tagged as vX.Y.Z instead of pypi-vX.Y.Z in the git repo going forward.
    Source code(tar.gz)
    Source code(zip)
Owner
Abseil
Abseil
How to access and display MyEnergi data

MyEnergi-Python-Example How to access and display MyEnergi data Windows PC Install a version of Python typically 3.10 The Python code here needs addit

G6EJD 8 Nov 28, 2022
Wrapper for the undocumented CodinGame API. Can be used both synchronously and asynchronlously.

codingame API wrapper Pythonic wrapper for the undocumented CodinGame API. Installation Python 3.6 or higher is required. Install codingame with pip:

Takos 19 Jun 20, 2022
Integration between the awesome window manager and the firefox web browser.

Integration between the awesome window manager and the firefox web browser.

contribuewwt 3 Feb 02, 2022
DeDRM tools for ebooks

DeDRM_tools DeDRM tools for ebooks This is a fork of Apprentice Harper's version of the DeDRM tools. I've added some of the PRs that still haven't bee

2 Jan 10, 2022
PyDy, short for Python Dynamics, is a tool kit written in the Python

PyDy, short for Python Dynamics, is a tool kit written in the Python programming language that utilizes an array of scientific programs to enable the study of multibody dynamics. The goal is to have

PyDy 307 Jan 01, 2023
LinkML based SPARQL template library and execution engine

sparqlfun LinkML based SPARQL template library and execution engine modularized core library of SPARQL templates generic templates using common vocabs

Linked data Modeling Language 6 Oct 10, 2022
This is a survey of python's async concurrency features by example.

Survey of Python's Async Features This is a survey of python's async concurrency features by example. The purpose of this survey is to demonstrate tha

Tyler Lovely 4 Feb 10, 2022
RDFLib is a Python library for working with RDF, a simple yet powerful language for representing information.

RDFLib RDFLib is a pure Python package for working with RDF. RDFLib contains most things you need to work with RDF, including: parsers and serializers

RDFLib 1.8k Jan 02, 2023
Google Foobar challenge solutions from my experience and other's on the web.

Google Foobar challenge Google Foobar challenge solutions from my experience and other's on the web. Note: Problems indicated with "Mine" are tested a

Islam Ayman 6 Jan 20, 2022
Mannaggia is a python application to praise or more likely to curse the saints

Mannaggia-py 👼 Remember Mannaggia? This is a Python remake of it, with new features. mannaggia is a python application to praise or more likely to cu

Christian Visintin 9 Aug 12, 2022
A module to prevent invites and joins to Matrix rooms by checking the involved server(s)' domain.

Synapse Domain Rule Checker A module to prevent invites and joins to Matrix rooms by checking the involved server(s)' domain. Installation From the vi

matrix.org 4 Oct 24, 2022
A middle-to-high level algorithm book designed with coding interview at heart!

Hands-on Algorithmic Problem Solving A one-stop coding interview prep book! About this book In short, this is a middle-to-high level algorithm book de

Li Yin 1.8k Jan 02, 2023
Flight Reservation App With Python

Flight Reservation App With Python

victor-h. 1 Nov 21, 2021
Calculate the efficient frontier

关于 代码主要参考Fábio Neves的文章,你可以在他的文章中找到一些细节性的解释

Wyman Lin 104 Nov 11, 2022
A python package template that can be adapted for RAP projects

Warning - this repository is a snapshot of a repository internal to NHS Digital. This means that links to videos and some URLs may not work. Repositor

NHS Digital 3 Nov 08, 2022
Análise do Aplicativo Prévias PSDB 2021

Análise do Aplicativo Prévias PSDB 2021 Com a recente polêmica sobre o aplicativo usado nas Prévias do PSDB de 2021, fiquei curioso para saber como er

Paulo Matias 18 Jul 31, 2022
A simple, fantasy and fast note taking program.

notes A simple, fantasy and fast note taking program Installation This program supposed to run in linux and may have some bugs on windows or any other

Ali Hosseinverdi 1 Apr 06, 2022
Taxonomy addition for complete trees

TACT: Taxonomic Addition for Complete Trees TACT is a Python app for stochastic polytomy resolution. It uses birth-death-sampling estimators across an

Jonathan Chang 3 Jun 07, 2022
Projeto de análise de dados com SQL

Project-Analizyng-International-Debt-Statistics- Projeto de análise de dados com SQL - Plataforma Data Camp Descrição do Projeto : Não é que nós human

Lorrayne Silva 1 Feb 01, 2022
Custom SLURM wrapper scripts to make finding job histories and system resource usage more easily accessible

SLURM Wrappers Executables job-history A simple wrapper for grabbing data for completed and running jobs. nodes-busy Developed for the HPC systems at

Sara 2 Dec 13, 2021