Openfe - Alchemical free energy calculations for the masses

Related tags

Miscellaneousopenfe
Overview

build coverage

The Open Free Energy library

Alchemical free energy calculations for the masses.

See our website for more information.

License

This library is made available under the MIT open source license.

Important note

This is pre-alpha work, it should not be considered ready for production and API changes are expected at any time without prior warning.

Install

Dependencies can be installed via conda through:

conda env create -f environment.yml

The openfe library can be installed via:

python -m pip install --no-deps .

Authors

The OpenFE development team.

Acknowledgements

OpenFE is an Open Molecular Software Foundation hosted project.

Comments
  • Add visualization to AtomMapping

    Add visualization to AtomMapping

    Fixes #37

    Here is a little snippet to run in a notebook to see the visualization:

    from rdkit import Chem
    from openfe.setup.lomap_mapper import LomapAtomMapper
    
    
    mol_1_smi = "c1ccccc1"  # benzene
    mol_2_smi = "Oc1ccccc1"  #phenol
    mol_1, mol_2 = Chem.MolFromSmiles(mol_1_smi), Chem.MolFromSmiles(mol_2_smi)
    mol_1, mol_2 = Chem.AddHs(mol_1), Chem.AddHs(mol_2)
    Chem.rdDepictor.Compute2DCoords(mol_1), Chem.rdDepictor.Compute2DCoords(mol_2)
    
    mapper = LomapAtomMapper()
    mapping = next(mapper.suggest_mappings(mol_1, mol_2))
    
    
    mapping.visualize()
    

    I haven't added tests yet since I wasn't sure if this is where we wanted to wire this method in. I also need to wire this into the cli, but we should discuss what we want that to look like as well.

    opened by mikemhenry 18
  • WIP: Perses atom mappers

    WIP: Perses atom mappers

    Here we adress https://github.com/OpenFreeEnergy/tasks/issues/3. Goal is to embed the Perses atom mapping infrastructure like the lomap code.

    Todo:

    • [x] implement perses_mapper
    • [x] implement perses_scorer
    • [x] write tests perses_mapper
    • [x] write tests perses_scorer
    • [x] pep8
    • [x] add test for Not implemented error test_perses_scorer
    • [x] clean up tests with fixtures.
    • [x] making perses import optional? need to decide on centralized func call or decorators
    • [x] show results

    this is related to: #3 #11 #10

    opened by RiesBen 16
  • use versioneer for the version number

    use versioneer for the version number

    @dwhswenson thoughts on this? The one thing that is nice about using versioneer here is the output is really useful during development, but I will admit I'm not an expert on the plugin cli architecture, so not having an import openfe may be very intentional.

    $ openfe --version
    openfe, version v0.1.post7+gfdc895f
    

    P.S. Really not trying to bike shed hear, so if this PR feels like that is what I'm doing, feel free to close it!

    opened by mikemhenry 11
  • Minor updates to Scorer

    Minor updates to Scorer

    This is a small PR where I'm cherry-picking some of the changes that have come up as I've been working on AtomMappers. Main things:

    • Added setup/errors.py, which currently just contains a string template for errors when using abstract methods.
    • Make score and annotation functions in Scorer private. This will allow arbitrary functions to be used as scorers (useful if an AtomMapper wants to provide a scoring function as an instance method).
    • Move the fixtures for atommappings into conftest.py; use one of them instead of the nonsense placeholder for the scoring tests.
    opened by dwhswenson 10
  • Molecular box auto padding

    Molecular box auto padding

    There should probably be a way (i.e. classmethod) to auto generate a box size for a given protein (or largest thing), this description is good for how this should behave:

    https://github.com/choderalab/perses/issues/949#issuecomment-1057581435

    priority:low 
    opened by richardjgowers 9
  • Class renames

    Class renames

    To try thinking bigger and be more future proof, label everything currently designed for ligands as for LigandX. i.e.

    • Molecule -> LigandMolecule
    • AtomMapper -> LigandAtomMapper
    • AtomMapping -> LigandAtomMapping

    In particular, our Molecule representation will likely not suit a protein molecule (so isn't a generic Molecule, but something we use for a specific use case).

    The AtomMapping container works for small molecules, but for larger molecules (i.e. protein mutation) you'd want something smarter at expressing the change.

    opened by richardjgowers 9
  • CLI for AtomMapping

    CLI for AtomMapping

    Includes and builds on #49, should only be merged after that one.

    This adds some reusable parameters (--mol and --mapper), as well as a command that outputs the mol1_to_mol2 mapping dict.

    The current usage is only intended to be a starting point, which we can improve later. It looks something like this:

    $ openfe atommapping --mol "Cc1ccccc1" --mol "CC1CCCCC1" --mapper LomapAtomMapper
    {0: 0, 1: 1, 2: 2, 3: 3, 4: 4, 5: 5, 6: 6}
    

    Things that aren't ideal there:

    • Takes SMILES strings (and only SMILES for now). That can easily be extended. Currently this is also using an ugly workaround to avoid issue in openfreeenergy/lomap#4.
    • There's no way to provide options to mapper. ~I'm not sure that there's an easy way to do that, either.~ [EDIT: I came up with an approach that I think will work, but the question whether it's worth it is still on the table.] Perhaps it would make more sense to load from a serialized network and to find the edge(s?) associated with the two molecules -- in this sense, you'd use it to look at the mapping after it has been generated (but before simulating), instead of generating it before. @richardjgowers, you would have better sense on whether that approach would fit with what was requested.

    A few corners are still WIP, but the main ideas are here.

    • [x] MOL parameter
    • [x] MAPPER parameter
    • [x] atommapping command
    • [x] Tests for everything
    • [x] Docstrings for everything
    opened by dwhswenson 9
  • Add Versioneer

    Add Versioneer

    Fixes issue #23

    We need to decide how we want to tag releases https://github.com/python-versioneer/python-versioneer/blob/master/INSTALL.md so we can set tag_prefix correctly.

    tag_prefix:
    
    a string, like 'PROJECTNAME-', which appears at the start of all VCS tags. If your tags look like 'myproject-1.2.0', then you should use tag_prefix='myproject-'. If you use unprefixed tags like '1.2.0', this should be an empty string, using either tag_prefix= or tag_prefix=''.
    
    opened by mikemhenry 9
  • Barebones setup

    Barebones setup

    Please add as desired / tick off as sorted out

    We need:

    • [x] basic setup.py / setup.cfg / pyproject.toml
    • [x] basic directory structure
    • [x] license (thanks @richardjgowers !)
    • [x] README.md
    • [x] environment.yaml?
    • [x] dummy workflow in .github folder? (just an action that tests nothing should be fine?)
    • [x] pep8speaks?
    • [x] coverage / codecov
    • [x] linters? (linting will be kept local for now)
    • [ ] CONTRIBUTING
    opened by IAlibay 9
  • [WIP] quickrun should error if a unit errors

    [WIP] quickrun should error if a unit errors

    Errors, but saves the details error in the output file (and probably dumps it to stdout as well, though it'll be part of a mess).

    • [x] raise error at the end if we get any error
    • [ ] test case with a erroring unit
    opened by dwhswenson 7
  • quickrun CLI command

    quickrun CLI command

    Takes a ProtocolDAG saved as JSON, runs the DAG, and returns results.

    A few things before this is ready to merge:

    • [x] Decide whether the input is a serialized ProtocolDAG or a serialized Transformation. These are essentially equivalent, but there's some discussion to be had on what it means from user experience.
    • [x] Decide on how to ensure serializability of results. In particular, we need to decide how to handle Path objects, and whether any non-JSON-serializables other than Paths are allowed return values.
    • [x] Add a test
    • [ ] ~Merge openfreeenergy/gufe#62~ This isn't actually needed here, but will be needed in the future.
    • [x] Merge PR that adds GufeTokenizable support to atom mappings (included in #142, but might split that part off of that PR)

    Resolves #172.

    opened by dwhswenson 7
  • Dump system PDB or XML by default

    Dump system PDB or XML by default

    Something I've realise, we don't have a good way to post process coordinates at the moment since we don't have a "topology" equivalent we dump out by default to then pass out to MDA or MDTraj.

    opened by IAlibay 1
  • RBFE protocol: add cpu fallback for minimizing

    RBFE protocol: add cpu fallback for minimizing

    I'm not convinced this is the best approach (actually I think it's kinda broken).

    I think ideally we should attempt to do the GPU minimizing, then if the energy is still positive rewind to before we attempted to minimize and default to the CPU. Is this possible?

    Ideally we should migrate this out to openmmtools, just adding this here for an initial test/discussion.

    Pinging @mikemhenry and @dwhswenson

    opened by IAlibay 1
  • Clarify RBFE online analysis log and make sure it's available for users

    Clarify RBFE online analysis log and make sure it's available for users

    We got a request for monitoring simulations, this is already generated as part of the MultistateSampler online analysis, but we should make sure that those log files are a) documented, b) actually recovered at the end of simulations (and not just left in temp directories).

    opened by IAlibay 0
  • Move mapper/mapping (LigandAtomMapping and LigandAtomMapper) implementations to gufe?

    Move mapper/mapping (LigandAtomMapping and LigandAtomMapper) implementations to gufe?

    Recent conversations raised that these implementations may be useful to more than one project.

    How best should these classes be shared? Should they be moved to gufe?

    opened by IAlibay 5
Releases(v0.5)
  • v0.5(Dec 16, 2022)

    Mainly bug fixes concerning constraint mapping in the RBFE Protocol

    What's Changed

    • TST: fix stray directories being made during testing by @richardjgowers in https://github.com/OpenFreeEnergy/openfe/pull/220
    • Dry run now returns sampler via debug dictionary entry by @IAlibay in https://github.com/OpenFreeEnergy/openfe/pull/217
    • MAINT: Fixed up implicit none errors from mypy by @richardjgowers in https://github.com/OpenFreeEnergy/openfe/pull/226
    • Bug hunt fixes by @IAlibay in https://github.com/OpenFreeEnergy/openfe/pull/225
    • Add --log option to CLI by @dwhswenson in https://github.com/OpenFreeEnergy/openfe/pull/218
    • Xml regression tests by @richardjgowers in https://github.com/OpenFreeEnergy/openfe/pull/231
    • MAINT: remove old offtk from test matrix by @richardjgowers in https://github.com/OpenFreeEnergy/openfe/pull/236
    • bump pin on gufe by @richardjgowers in https://github.com/OpenFreeEnergy/openfe/pull/235

    Full Changelog: https://github.com/OpenFreeEnergy/openfe/compare/v0.4...v0.5

    Source code(tar.gz)
    Source code(zip)
  • v0.4(Nov 1, 2022)

    What's Changed

    • Fix the number of production steps being used by @IAlibay in https://github.com/OpenFreeEnergy/openfe/pull/141
    • change Lomap atom mapper to default to threed=True by @richardjgowers in https://github.com/OpenFreeEnergy/openfe/pull/143
    • Mapping distance by @richardjgowers in https://github.com/OpenFreeEnergy/openfe/pull/145
    • added check for element changes in openmm rbfe protocol by @richardjgowers in https://github.com/OpenFreeEnergy/openfe/pull/146
    • Visualization align mapped mols to eachother by @RiesBen in https://github.com/OpenFreeEnergy/openfe/pull/148
    • WIP: Perses atom mappers by @RiesBen in https://github.com/OpenFreeEnergy/openfe/pull/147
    • Add lower pin for lomap2 in environment yaml file by @IAlibay in https://github.com/OpenFreeEnergy/openfe/pull/157
    • Fixes the openmm rbfe protocol by @IAlibay in https://github.com/OpenFreeEnergy/openfe/pull/159
    • Fix rms tolerance check by @IAlibay in https://github.com/OpenFreeEnergy/openfe/pull/161
    • 154 add test for persesmapper not finding a mapping by @RiesBen in https://github.com/OpenFreeEnergy/openfe/pull/158
    • Add vacuum support for relative ligand transform by @IAlibay in https://github.com/OpenFreeEnergy/openfe/pull/160
    • Fix tests by @richardjgowers in https://github.com/OpenFreeEnergy/openfe/pull/163
    • remove py 3.8 from CI by @richardjgowers in https://github.com/OpenFreeEnergy/openfe/pull/162
    • Remove universal bdist_wheel in setup.cfg by @IAlibay in https://github.com/OpenFreeEnergy/openfe/pull/165
    • Fix to json by @richardjgowers in https://github.com/OpenFreeEnergy/openfe/pull/168
    • Add sams and independent samplers to equil RBFE protocol by @IAlibay in https://github.com/OpenFreeEnergy/openfe/pull/125
    • Using gufe protocols by @richardjgowers in https://github.com/OpenFreeEnergy/openfe/pull/142
    • Make dry run return true, add basepath by @IAlibay in https://github.com/OpenFreeEnergy/openfe/pull/186
    • Fix results_cls attribute name by @IAlibay in https://github.com/OpenFreeEnergy/openfe/pull/188
    • Fix result_cls again by @IAlibay in https://github.com/OpenFreeEnergy/openfe/pull/189
    • fix gathering of protocol results by @IAlibay in https://github.com/OpenFreeEnergy/openfe/pull/191
    • Make unit close reporter at end of simulation by @IAlibay in https://github.com/OpenFreeEnergy/openfe/pull/190
    • some mock based tests by @richardjgowers in https://github.com/OpenFreeEnergy/openfe/pull/193
    • quickrun CLI command by @dwhswenson in https://github.com/OpenFreeEnergy/openfe/pull/171
    • pin dependencies for release by @richardjgowers in https://github.com/OpenFreeEnergy/openfe/pull/194
    • Optional codecov failures by @IAlibay in https://github.com/OpenFreeEnergy/openfe/pull/196
    • Atom mapping tests by @richardjgowers in https://github.com/OpenFreeEnergy/openfe/pull/198
    • add logo badge by @richardjgowers in https://github.com/OpenFreeEnergy/openfe/pull/197
    • Expose loaders in CLI by @dwhswenson in https://github.com/OpenFreeEnergy/openfe/pull/200
    • [DOCS] Add quickrun command docs by @dwhswenson in https://github.com/OpenFreeEnergy/openfe/pull/202
    • Are we there yet? The py310 edition by @IAlibay in https://github.com/OpenFreeEnergy/openfe/pull/185
    • squashed a bug in mapping repr by @richardjgowers in https://github.com/OpenFreeEnergy/openfe/pull/207
    • [DOCS] Fixing RTD by @dwhswenson in https://github.com/OpenFreeEnergy/openfe/pull/204
    • fix gufe API usage in _create; move setup/methods -> protocols/ by @richardjgowers in https://github.com/OpenFreeEnergy/openfe/pull/211
    • [DOCS] Add dumping_transformation by @dwhswenson in https://github.com/OpenFreeEnergy/openfe/pull/210
    • [Docs] Installation info by @dwhswenson in https://github.com/OpenFreeEnergy/openfe/pull/212
    • [WIP] quickrun should error if a unit errors by @dwhswenson in https://github.com/OpenFreeEnergy/openfe/pull/209
    • Finish quickrun error handling by @dwhswenson in https://github.com/OpenFreeEnergy/openfe/pull/215
    • Pin to 0.4 gufe series for release by @richardjgowers in https://github.com/OpenFreeEnergy/openfe/pull/216

    New Contributors

    • @RiesBen made their first contribution in https://github.com/OpenFreeEnergy/openfe/pull/148

    Full Changelog: https://github.com/OpenFreeEnergy/openfe/compare/v0.3...v0.4

    Source code(tar.gz)
    Source code(zip)
  • v0.2.1(Apr 7, 2022)

    Install Instructions

    Online Installer

    To play with the latest notebook, use this command to install the latest version of our packages:

    conda env create openfe/openfe-notebooks Then run:

    conda activate openfe-notebooks
    git clone https://github.com/OpenFreeEnergy/ExampleNotebooks.git openfe-example-notebooks
    cd openfe-example-notebooks
    git checkout april-2022
    jupyter notebook openmm-rbfe/OpenFE_showcase_1_RBFE_of_T4lysozyme.ipynb
    

    Offline Installer

    Download the relevant installer for your operating system and preferred python version. We have attached the version of the example notebook that works with the latest release of openfe.

    If you used our single file installer from the last release, download new-deps.tar.gz. Then activate the old environment before extracting and installing the packages with pip:

    # Be sure the old environment is activated! 
    mkdir new-deps && tar xzvf new-deps.tar.gz -C new-deps
    pip install new-deps/*
    

    Bug Fixes

    Hotfix of results

    Source code(tar.gz)
    Source code(zip)
    ExampleNotebooks-april-2022.tar.gz(1.18 MB)
    new-deps.tar.gz(931.46 KB)
    openfe-v0.2.1-py38-Linux-x86_64.sh(1377.49 MB)
    openfe-v0.2.1-py38-MacOSX-x86_64.sh(511.41 MB)
    openfe-v0.2.1-py39-Linux-x86_64.sh(1401.89 MB)
    openfe-v0.2.1-py39-MacOSX-x86_64.sh(513.19 MB)
  • v0.1(Mar 28, 2022)

    What's Changed

    • Initial skeleton by @dwhswenson in https://github.com/OpenFreeEnergy/openfe/pull/21
    • Add some changes requested in PR #21 by @IAlibay in https://github.com/OpenFreeEnergy/openfe/pull/22
    • Fix setup.cfg to include packages by @dwhswenson in https://github.com/OpenFreeEnergy/openfe/pull/25
    • Add base Scorer by @dwhswenson in https://github.com/OpenFreeEnergy/openfe/pull/26
    • atommapping implementation by @richardjgowers in https://github.com/OpenFreeEnergy/openfe/pull/28
    • Prevent CodeCov from running on forks, cron jobs by @dwhswenson in https://github.com/OpenFreeEnergy/openfe/pull/27
    • Convert to normal package; add utils; move errors to utils/errors by @dwhswenson in https://github.com/OpenFreeEnergy/openfe/pull/32
    • AtomMapper base classes by @dwhswenson in https://github.com/OpenFreeEnergy/openfe/pull/30
    • Remove Scorers by @dwhswenson in https://github.com/OpenFreeEnergy/openfe/pull/33
    • Molecule class by @dwhswenson in https://github.com/OpenFreeEnergy/openfe/pull/39
    • [WIP] Network container class by @dwhswenson in https://github.com/OpenFreeEnergy/openfe/pull/40
    • Add a simple coveragerc to ignore tests in reporting by @IAlibay in https://github.com/OpenFreeEnergy/openfe/pull/44
    • Tests for Network object by @dwhswenson in https://github.com/OpenFreeEnergy/openfe/pull/43
    • Add Versioneer by @mikemhenry in https://github.com/OpenFreeEnergy/openfe/pull/45
    • WIP: Lomap atommapper by @richardjgowers in https://github.com/OpenFreeEnergy/openfe/pull/31
    • suggested Network & Molecule changes by @richardjgowers in https://github.com/OpenFreeEnergy/openfe/pull/46
    • update AtomMapping type annotations by @richardjgowers in https://github.com/OpenFreeEnergy/openfe/pull/48
    • Set up basic mypy CI by @IAlibay in https://github.com/OpenFreeEnergy/openfe/pull/50
    • omit _version.py from coverage by @IAlibay in https://github.com/OpenFreeEnergy/openfe/pull/53
    • Proposed API change on AtomMapper by @dwhswenson in https://github.com/OpenFreeEnergy/openfe/pull/56
    • CLI Skeleton by @dwhswenson in https://github.com/OpenFreeEnergy/openfe/pull/49
    • network planning functions started by @richardjgowers in https://github.com/OpenFreeEnergy/openfe/pull/41
    • CLI for AtomMapping by @dwhswenson in https://github.com/OpenFreeEnergy/openfe/pull/57
    • added stubs for Molecule conversions by @richardjgowers in https://github.com/OpenFreeEnergy/openfe/pull/58
    • Molecule serialization/deserialization by @dwhswenson in https://github.com/OpenFreeEnergy/openfe/pull/63
    • Network Serialization by @dwhswenson in https://github.com/OpenFreeEnergy/openfe/pull/64
    • Docsdocsdocs by @richardjgowers in https://github.com/OpenFreeEnergy/openfe/pull/66
    • Skip running OE license check on PR by @mikemhenry in https://github.com/OpenFreeEnergy/openfe/pull/71
    • Add serialization test data script by @dwhswenson in https://github.com/OpenFreeEnergy/openfe/pull/69
    • Add support to get molecule name from _Name prop by @dwhswenson in https://github.com/OpenFreeEnergy/openfe/pull/68
    • Add support for CLI --mol to load SDF by @dwhswenson in https://github.com/OpenFreeEnergy/openfe/pull/67
    • Add visualization to AtomMapping by @mikemhenry in https://github.com/OpenFreeEnergy/openfe/pull/60
    • [WIP] Combine visualization with CLI by @dwhswenson in https://github.com/OpenFreeEnergy/openfe/pull/72

    Full Changelog: https://github.com/OpenFreeEnergy/openfe/commits/v0.1

    Source code(tar.gz)
    Source code(zip)
    ExampleNotebooks.tar.gz(1.23 MB)
    macOS-latest_py3.8.sh.zip(504.57 MB)
    macOS-latest_py3.9.sh.zip(505.42 MB)
    ubuntu-latest_py3.8.sh.zip(1370.76 MB)
    ubuntu-latest_py3.9.sh.zip(1396.11 MB)
Better GitHub statistics images for your profile, with stats from private and public repos

Better GitHub statistics images for your profile, with stats from private and public repos

Jacob Strieb 2k Dec 30, 2022
Moleey Panel with python 3

Painel-Moleey pkg upgrade && pkg update pkg install python3 pip install pyfiglet pip install colored pip install requests pip install phonenumbers pkg

Moleey. 1 Oct 17, 2021
Free and open source qualitative research tool

Taguette A spin on the phrase "tag it!", Taguette is a free and open source qualitative research tool that allows users to: Import PDFs, Word Docs (.d

Remi Rampin 48 Jan 02, 2023
AHP Calculator - A method for organizing and evaluating complicated decisions, using Maths and Psychology

AHP Calculator - A method for organizing and evaluating complicated decisions, using Maths and Psychology

16 Aug 08, 2022
Aoc 2021 kedro playground with python

AOC 2021 Overview This is your new Kedro project, which was generated using Kedro 0.17.5. Take a look at the Kedro documentation to get started. Rules

1 Dec 20, 2021
Interactivity Lab: Household Pulse Explorable

Interactivity Lab: Household Pulse Explorable Goal: Build an interactive application that incorporates fundamental Streamlit components to offer a cur

1 Feb 10, 2022
Runtime inspection utilities for Python typing module

Typing Inspect The typing_inspect module defines experimental API for runtime inspection of types defined in the Python standard typing module. Works

Ivan Levkivskyi 284 Dec 29, 2022
Convert Roman numerals to modern numerals and vice-versa

Roman Numeral Conversion Utilities This is a utility module for converting from and to Roman numerals. It supports numbers upto 3,999,999, using the v

Fictive Kin 1 Dec 17, 2021
Visualization of COVID-19 Omicron wave data in Seoul, Osaka, Tokyo, Hong Kong and Shanghai. 首尔、大阪、东京、香港、上海由新冠病毒 Omicron 变异株引起的本轮疫情数据可视化分析。

COVID-19 in East Asian Megacities This repository holds original Python code for processing and visualization COVID-19 data in East Asian megacities a

STONE 10 May 18, 2022
Awesome Casino is simple offline casino made on python.

Awesome-Casino Awesome Casino is simple offline casino made on python. I found bug, what can i do? If you find any bug or want to suggest any idea, al

Herman 1 Feb 04, 2022
List of short Codeforces problems with a statement of 1000 characters or less. Python script and data files included.

Shortest problems on Codeforces List of Codeforces problems with a short problem statement of 1000 characters or less. Sorted for each rating level. B

32 Dec 24, 2022
Albert launcher extension for rolling dice.

dice-roll-albert-ext Extension for rolling dice in Albert launcher Installation Locate the modules directory in the Python extension data directory. T

Jonah Lawrence 1 Nov 18, 2021
Force you (or your user) annotate Python function type hints.

Must-typing Force you (or your user) annotate function type hints. Notice: It's more like a joke, use it carefully. If you call must_typing in your mo

Konge 13 Feb 19, 2022
Free APN For Python

Free APN For Python

XENZI GANZZ 4 Apr 22, 2022
A place where the most basic, basic of python coding exists

python-basics A place where the most basic, basic of python coding exists As you can see, there are four folders and the best order to read is: appeti

Chuqin 2 Oct 05, 2022
Automated, progress quest-inspired procedural adventuring

Tales of an Endless Journey (TEJ) Automated, progress quest-inspired procedural adventuring What is this project? Journey is the result of many, many

8 Dec 14, 2021
Annotates sequences with Eggnog-mapper and hhblits against PDB70

Annotating "hypothetical" proteins with the PDB See config/ for configuration information. This workflow takes as input a set of protein sequences. It

1 Apr 05, 2022
Fix Eitaa Messenger's Font Problem on Linux

Fix Eitaa Messenger's Font Problem on Linux

6 Oct 15, 2022
Student Enrollment Analysis System

SEAS Student Enrollment Analysis System Steps to start working: create a user name "seas", host name: local, password: seas, mark all checkbox - go C

Md. Zakaria Kabir 3 Jul 12, 2022
Click2call for asterisk with python

Click2call para Asterisk com Python Este projeto disponibiliza uma API construíd

Benedito Marques 1 Jan 17, 2022