Skip to main content

Medical Physics python modules

Project description

PyMedPhys

Description

A range of python modules encompased under the pymedphys package, designed to be built upon for Medical Physics applications.

Alpha stage development

These libraries are currently under alpha level development. Be cautious with code in this library. Not only might code depending on it break, but the results given by this code likely may just be plain wrong.

This will be true throughout the alpha stage development of these libraries. This notice will be adjusted once this should no longer be the case.

Throughout the lifetime of this library however the following will always be true:

In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages.

Installation

This package is available on pypi at https://pypi-hypernode.com/project/pymedphys/.

Install this package by running the following:

pip install pymedphys

Team and copyright

The aim of PyMedPhys is that it will be developed by an open community of contributors. We use a shared copyright model that enables all contributors to maintain the copyright on their contributions. All code is licensed under the AGPLv3+ with additional terms from the Apache-2.0 license.

PyMedPhys' current maintainers listed in alphabetical order, with affilliation, and main area of contribution:

License agreement

Copyright (C) 2018 PyMedPhys Contributors

This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version (the "AGPL-3.0+").

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License and the additional terms for more details.

You should have received a copy of the GNU Affero General Public License along with this program. If not, see http://www.gnu.org/licenses/.

ADDITIONAL TERMS are also included as allowed by Section 7 of the GNU Affrero General Public License. These aditional terms are Sections 1, 5, 6, 7, 8, and 9 from the Apache License, Version 2.0 (the "Apache-2.0") where all references to the definition "License" are instead defined to mean the AGPL-3.0+.

You should have received a copy of the Apache-2.0 along with this program. If not, see http://www.apache.org/licenses/LICENSE-2.0.

Cyclic dependencies and the justification of file structure

If package A depends on package B, and package B depends on package C, it is important that package C does not then depend on package A. This is called a cyclic dependency. It causes issues in dependency logic and can be avoided by purposefully designing how the packages depend on one another.

Ideally library packages are split up module by module based upon single tasks that each library achieves. By having a very large number of small single purpose modules the dependency tree can become very complicated. Complicated dependency trees do not scale. As a result the inter dependencies between library packages is tightly regulated. The modules themselves need to be designed and programmed with these restrictions in mind.

The physical design of the module dependencies is inspired by John Lakos at Bloomberg, writer of Large-Scale C++ Software Design. He describes this methodology in a talk he gave which is available on YouTube:

https://youtu.be/QjFpKJ8Xx78?t=41m7s

Level 1

Level 1 packages are the foundation library packages.

These packages SHALL NOT depend on any internal package. They MAY however depend on external packages (Level 0).

Given that these Level 1 packages are foundation packages their external packages SHOULD only ever be those that are in wide use and are highly supported within the python community. Examples of reasonable external packages to be used are numpy, scipy, and pandas.

Level 2

Level 2 packages.

The internal packages that Level 2 packages depend on SHALL only be Level 1 packages or external packages as long as those external packages don't intern depend on one defined within this group.

Level 3

Level 3 packages.

The internal packages that these depend on SHALL only be Level 1 or Level 2. They MAY also depend external packages as long as those external packages don't intern depend on one defined within this group.

Project details


Release history Release notifications | RSS feed

This version

0.1.7

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pymedphys-0.1.7.tar.gz (17.6 kB view details)

Uploaded Source

Built Distribution

pymedphys-0.1.7-py3-none-any.whl (20.5 kB view details)

Uploaded Python 3

File details

Details for the file pymedphys-0.1.7.tar.gz.

File metadata

  • Download URL: pymedphys-0.1.7.tar.gz
  • Upload date:
  • Size: 17.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for pymedphys-0.1.7.tar.gz
Algorithm Hash digest
SHA256 39d4e1b09511f8243d69a9330bbd666f26a64f9ef1191bef4a371b90c49e52e8
MD5 e05a89e53bdc96d2e79710c1af8d44e1
BLAKE2b-256 d59cb61164c8488ff35574d4feb8de496bc9368e9a6bc5997ca5ca6050933e80

See more details on using hashes here.

File details

Details for the file pymedphys-0.1.7-py3-none-any.whl.

File metadata

File hashes

Hashes for pymedphys-0.1.7-py3-none-any.whl
Algorithm Hash digest
SHA256 56020f041cdba7b7653fa4217a1686d034c0a3455eeaf8b3e15994ef8865d0cd
MD5 4173f7388dd9269945ab8cebae1515eb
BLAKE2b-256 0dfe8dff5ce9cc1b19799d0a5c1381fab49ca2fa537914ed7927267fe67a1889

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page