CSF-3DFin


NameCSF-3DFin JSON
Version 1.3.0 PyPI version JSON
download
home_pagehttp://ramm.bnu.edu.cn/projects/CSF/
SummaryCSF: Ground Filtering based on Cloth Simulation
upload_time2024-02-20 13:15:17
maintainerRomain Janvier
docs_urlNone
authorJianbo Qi
requires_python
licenseApache-2.0
keywords lidar dtm dsm classification
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            ![csf1](https://github.com/jianboqi/CSF/blob/master/CSFDemo/CSF1.png) ![csf2](https://github.com/jianboqi/CSF/blob/master/CSFDemo/CSF2.png)
# CSF
Airborne LiDAR filtering method based on Cloth Simulation.
This is the code for the article:

W. Zhang, J. Qi*, P. Wan, H. Wang, D. Xie, X. Wang, and G. Yan, “An Easy-to-Use Airborne LiDAR Data Filtering Method Based on Cloth Simulation,” Remote Sens., vol. 8, no. 6, p. 501, 2016.
(http://www.mdpi.com/2072-4292/8/6/501/htm)


**This is a modified version of the original Code for 3DFin purposes**

For now this is only intended to be used inside [3DFin](https://github.com/3DFin/3Dfin)/[dendromatics](https://github.com/3DFin/dendromatics). 
But this repository also serve as a playground to bootstrap a planned full rewrite of CSF.

List of changes:

- Better handling of numpy arrays in the python bindings (avoid expensive copies)
- Bug fixes and improvement (mostly backport from CloudCompare version of CSF and original ones)
- Better (but yet to be improved) documentation and code structure.

**New feature has been implemented:**

Now, We has wrapped a Python interface for CSF with swig. It is simpler to use now. This new feature can make CSF easier to be embeded into a large project. For example, it can work with Laspy (https://github.com/laspy/laspy). What you do is just read a point cloud into a python 2D list, and pass it to CSF.
The following example shows how to use it with laspy.
```python
# coding: utf-8
import laspy
import CSF
import numpy as np

inFile = laspy.read(r"in.las") # read a las file
points = inFile.points
xyz = np.vstack((inFile.x, inFile.y, inFile.z)).transpose() # extract x, y, z and put into a list

csf = CSF.CSF()

# prameter settings
csf.params.bSloopSmooth = False
csf.params.cloth_resolution = 0.5
# more details about parameter: http://ramm.bnu.edu.cn/projects/CSF/download/

csf.setPointCloud(xyz)
ground = CSF.VecInt()  # a list to indicate the index of ground points after calculation
non_ground = CSF.VecInt() # a list to indicate the index of non-ground points after calculation
csf.do_filtering(ground, non_ground) # do actual filtering.

outFile = laspy.LasData(inFile.header)
outFile.points = points[np.array(ground)] # extract ground points, and save it to a las file.
out_file.write(r"out.las")
```

**Reading data from txt file:**

If the lidar data is stored in txt file (x y z for each line), it can also be imported directly.

```python
import CSF

csf = CSF.CSF()
csf.readPointsFromFile('samp52.txt')

csf.params.bSloopSmooth = False
csf.params.cloth_resolution = 0.5

ground = CSF.VecInt()  # a list to indicate the index of ground points after calculation
non_ground = CSF.VecInt() # a list to indicate the index of non-ground points after calculation
csf.do_filtering(ground, non_ground) # do actual filtering.
csf.savePoints(ground,"ground.txt")
```

### How to use CSF in Python
Thanks to [@rjanvier](https://github.com/rjanvier)'s contribution. Now we can install CSF from pip as:
```python
pip install cloth-simulation-filter
```

### How to use CSF in Matlab
see more details from file `demo_mex.m` under matlab folder.

### How to use CSF in R

Thanks to the nice work of @Jean-Romain, through the collaboration, the CSF has been made as a R package, the details can be found in the [RCSF repository](https://github.com/Jean-Romain/RCSF). This package can be used easily with the [lidR package](https://github.com/Jean-Romain/lidR):

```r
library(lidR)
las  <- readLAS("file.las")
las  <- lasground(las, csf())
```

### How to use CSF in C++
Now, CSF is built by CMake, it produces a static library, which can be used by other c++ programs.
#### linux
To build the library, run:
```bash
mkdir build #or other name
cd build
cmake ..
make
sudo make install
```
or if you want to build the library and the demo executable `csfdemo`

```bash
mkdir build #or other name
cd build
cmake -DBUILD_DEMO=ON ..
make
sudo make install

```

#### Windows
You can use CMake GUI to generate visual studio solution file.

### Binary Version
For binary release version, it can be downloaded at: http://ramm.bnu.edu.cn/projects/CSF/download/

Note: This code has been changed a lot since the publication of the corresponding paper. A lot of optimizations have been made. We are still working on it, and wish it could be better.

### Cloudcompare Pulgin
At last, if you are interested in Cloudcompare, there is a good news. our method has been implemented as a Cloudcompare plugin, you can refer to : https://github.com/cloudcompare/trunk

### Related project
A tool named `CSFTools` has been recently released, it is based on CSF, and provides dem/chm generation, normalization. Please refer to: https://github.com/jianboqi/CSFTools

### License
CSF is maintained and developed by Jianbo QI. It is now released under Apache 2.0.


            

Raw data

            {
    "_id": null,
    "home_page": "http://ramm.bnu.edu.cn/projects/CSF/",
    "name": "CSF-3DFin",
    "maintainer": "Romain Janvier",
    "docs_url": null,
    "requires_python": "",
    "maintainer_email": "romain.janvier@hotmail.fr",
    "keywords": "LiDAR DTM DSM Classification",
    "author": "Jianbo Qi",
    "author_email": "jianboqi@126.com",
    "download_url": "https://files.pythonhosted.org/packages/c7/a3/1e4612a5ff6ef08f885e0d8e83ba972cbe767bbd07a6fb5f9d2f47725554/CSF_3DFin-1.3.0.tar.gz",
    "platform": null,
    "description": "![csf1](https://github.com/jianboqi/CSF/blob/master/CSFDemo/CSF1.png) ![csf2](https://github.com/jianboqi/CSF/blob/master/CSFDemo/CSF2.png)\n# CSF\nAirborne LiDAR filtering method based on Cloth Simulation.\nThis is the code for the article:\n\nW. Zhang, J. Qi*, P. Wan, H. Wang, D. Xie, X. Wang, and G. Yan, \u201cAn Easy-to-Use Airborne LiDAR Data Filtering Method Based on Cloth Simulation,\u201d Remote Sens., vol. 8, no. 6, p. 501, 2016.\n(http://www.mdpi.com/2072-4292/8/6/501/htm)\n\n\n**This is a modified version of the original Code for 3DFin purposes**\n\nFor now this is only intended to be used inside [3DFin](https://github.com/3DFin/3Dfin)/[dendromatics](https://github.com/3DFin/dendromatics). \nBut this repository also serve as a playground to bootstrap a planned full rewrite of CSF.\n\nList of changes:\n\n- Better handling of numpy arrays in the python bindings (avoid expensive copies)\n- Bug fixes and improvement (mostly backport from CloudCompare version of CSF and original ones)\n- Better (but yet to be improved) documentation and code structure.\n\n**New feature has been implemented:**\n\nNow, We has wrapped a Python interface for CSF with swig. It is simpler to use now. This new feature can make CSF easier to be embeded into a large project. For example, it can work with Laspy (https://github.com/laspy/laspy). What you do is just read a point cloud into a python 2D list, and pass it to CSF.\nThe following example shows how to use it with laspy.\n```python\n# coding: utf-8\nimport laspy\nimport CSF\nimport numpy as np\n\ninFile = laspy.read(r\"in.las\") # read a las file\npoints = inFile.points\nxyz = np.vstack((inFile.x, inFile.y, inFile.z)).transpose() # extract x, y, z and put into a list\n\ncsf = CSF.CSF()\n\n# prameter settings\ncsf.params.bSloopSmooth = False\ncsf.params.cloth_resolution = 0.5\n# more details about parameter: http://ramm.bnu.edu.cn/projects/CSF/download/\n\ncsf.setPointCloud(xyz)\nground = CSF.VecInt()  # a list to indicate the index of ground points after calculation\nnon_ground = CSF.VecInt() # a list to indicate the index of non-ground points after calculation\ncsf.do_filtering(ground, non_ground) # do actual filtering.\n\noutFile = laspy.LasData(inFile.header)\noutFile.points = points[np.array(ground)] # extract ground points, and save it to a las file.\nout_file.write(r\"out.las\")\n```\n\n**Reading data from txt file:**\n\nIf the lidar data is stored in txt file (x y z for each line), it can also be imported directly.\n\n```python\nimport CSF\n\ncsf = CSF.CSF()\ncsf.readPointsFromFile('samp52.txt')\n\ncsf.params.bSloopSmooth = False\ncsf.params.cloth_resolution = 0.5\n\nground = CSF.VecInt()  # a list to indicate the index of ground points after calculation\nnon_ground = CSF.VecInt() # a list to indicate the index of non-ground points after calculation\ncsf.do_filtering(ground, non_ground) # do actual filtering.\ncsf.savePoints(ground,\"ground.txt\")\n```\n\n### How to use CSF in Python\nThanks to [@rjanvier](https://github.com/rjanvier)'s contribution. Now we can install CSF from pip as:\n```python\npip install cloth-simulation-filter\n```\n\n### How to use CSF in Matlab\nsee more details from file `demo_mex.m` under matlab folder.\n\n### How to use CSF in R\n\nThanks to the nice work of @Jean-Romain, through the collaboration, the CSF has been made as a R package, the details can be found in the [RCSF repository](https://github.com/Jean-Romain/RCSF). This package can be used easily with the [lidR package](https://github.com/Jean-Romain/lidR):\n\n```r\nlibrary(lidR)\nlas  <- readLAS(\"file.las\")\nlas  <- lasground(las, csf())\n```\n\n### How to use CSF in C++\nNow, CSF is built by CMake, it produces a static library, which can be used by other c++ programs.\n#### linux\nTo build the library, run:\n```bash\nmkdir build #or other name\ncd build\ncmake ..\nmake\nsudo make install\n```\nor if you want to build the library and the demo executable `csfdemo`\n\n```bash\nmkdir build #or other name\ncd build\ncmake -DBUILD_DEMO=ON ..\nmake\nsudo make install\n\n```\n\n#### Windows\nYou can use CMake GUI to generate visual studio solution file.\n\n### Binary Version\nFor binary release version, it can be downloaded at: http://ramm.bnu.edu.cn/projects/CSF/download/\n\nNote: This code has been changed a lot since the publication of the corresponding paper. A lot of optimizations have been made. We are still working on it, and wish it could be better.\n\n### Cloudcompare Pulgin\nAt last, if you are interested in Cloudcompare, there is a good news. our method has been implemented as a Cloudcompare plugin, you can refer to : https://github.com/cloudcompare/trunk\n\n### Related project\nA tool named `CSFTools` has been recently released, it is based on CSF, and provides dem/chm generation, normalization. Please refer to: https://github.com/jianboqi/CSFTools\n\n### License\nCSF is maintained and developed by Jianbo QI. It is now released under Apache 2.0.\n\n",
    "bugtrack_url": null,
    "license": "Apache-2.0",
    "summary": "CSF: Ground Filtering based on Cloth Simulation",
    "version": "1.3.0",
    "project_urls": {
        "Homepage": "http://ramm.bnu.edu.cn/projects/CSF/"
    },
    "split_keywords": [
        "lidar",
        "dtm",
        "dsm",
        "classification"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "326fe7c909980f428dedb07829ea90a4424d9f0a177cb78ebe70a4c3e350d2bb",
                "md5": "24e1f735ddb7c8e33699adef171bf6cb",
                "sha256": "6908c5a29ebd2010063bfb8549b490db3dfdd72816c7549d13bfab1573ba3914"
            },
            "downloads": -1,
            "filename": "CSF_3DFin-1.3.0-cp310-cp310-macosx_10_9_x86_64.whl",
            "has_sig": false,
            "md5_digest": "24e1f735ddb7c8e33699adef171bf6cb",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": null,
            "size": 162012,
            "upload_time": "2024-02-20T13:15:20",
            "upload_time_iso_8601": "2024-02-20T13:15:20.052538Z",
            "url": "https://files.pythonhosted.org/packages/32/6f/e7c909980f428dedb07829ea90a4424d9f0a177cb78ebe70a4c3e350d2bb/CSF_3DFin-1.3.0-cp310-cp310-macosx_10_9_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "5e62f1a5e0063d16389753764d00f80a60d009120d551be0c7abcf6dfcf74d63",
                "md5": "566ccb3e0469ab98d53209245bf74b7f",
                "sha256": "c0a064b5f21fe3307bb38e33874a6d86809fd83c1bbd89509c4f2c7e27874055"
            },
            "downloads": -1,
            "filename": "CSF_3DFin-1.3.0-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl",
            "has_sig": false,
            "md5_digest": "566ccb3e0469ab98d53209245bf74b7f",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": null,
            "size": 1467623,
            "upload_time": "2024-02-20T13:15:21",
            "upload_time_iso_8601": "2024-02-20T13:15:21.765724Z",
            "url": "https://files.pythonhosted.org/packages/5e/62/f1a5e0063d16389753764d00f80a60d009120d551be0c7abcf6dfcf74d63/CSF_3DFin-1.3.0-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "4d84b1f04f315642da624fdeba3c13a2b9b054c4c11713190c4a9889bf848896",
                "md5": "d0ea2dfe016be5fd7c23e1a4f88d8aec",
                "sha256": "759f17889fed3a258bc11775803fe0ad4d8487a898af8da3528bc09feb3ac7c3"
            },
            "downloads": -1,
            "filename": "CSF_3DFin-1.3.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "d0ea2dfe016be5fd7c23e1a4f88d8aec",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": null,
            "size": 1505728,
            "upload_time": "2024-02-20T13:15:24",
            "upload_time_iso_8601": "2024-02-20T13:15:24.194993Z",
            "url": "https://files.pythonhosted.org/packages/4d/84/b1f04f315642da624fdeba3c13a2b9b054c4c11713190c4a9889bf848896/CSF_3DFin-1.3.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "19df399cca993d4ddf61f2650a8454f82fe76c709e177c3208837dd304db2711",
                "md5": "ebd2cfa8f2b51f2782a0a5c8e3e8c9e8",
                "sha256": "2bee2536b0c6ce9c5f2985974145f872dca77932ac110b8f6657a8efed737642"
            },
            "downloads": -1,
            "filename": "CSF_3DFin-1.3.0-cp310-cp310-musllinux_1_1_i686.whl",
            "has_sig": false,
            "md5_digest": "ebd2cfa8f2b51f2782a0a5c8e3e8c9e8",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": null,
            "size": 2018134,
            "upload_time": "2024-02-20T13:15:26",
            "upload_time_iso_8601": "2024-02-20T13:15:26.690322Z",
            "url": "https://files.pythonhosted.org/packages/19/df/399cca993d4ddf61f2650a8454f82fe76c709e177c3208837dd304db2711/CSF_3DFin-1.3.0-cp310-cp310-musllinux_1_1_i686.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "8632ee508edf2d9a146e1987ad50d5766705e3a5ddff6dd9d39e55a8449940ef",
                "md5": "019137ce14d11d2380af8b09cf3d9f59",
                "sha256": "f9b118b04461393d7eb9886c403bca0615a89450d829eb122ed4e0b6aed70617"
            },
            "downloads": -1,
            "filename": "CSF_3DFin-1.3.0-cp310-cp310-musllinux_1_1_x86_64.whl",
            "has_sig": false,
            "md5_digest": "019137ce14d11d2380af8b09cf3d9f59",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": null,
            "size": 2024692,
            "upload_time": "2024-02-20T13:15:28",
            "upload_time_iso_8601": "2024-02-20T13:15:28.569779Z",
            "url": "https://files.pythonhosted.org/packages/86/32/ee508edf2d9a146e1987ad50d5766705e3a5ddff6dd9d39e55a8449940ef/CSF_3DFin-1.3.0-cp310-cp310-musllinux_1_1_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "53d3a19c8420a657aed603a08dab5e96872df1d450b65782733b5d2c2cd4b424",
                "md5": "eaf0933ee91415cd0828a2a4b5b790f0",
                "sha256": "5ae85dfc2a0224555652ed2fbdabf7795af6d6c66a3bbd6e5c3a3bf37d285701"
            },
            "downloads": -1,
            "filename": "CSF_3DFin-1.3.0-cp310-cp310-win32.whl",
            "has_sig": false,
            "md5_digest": "eaf0933ee91415cd0828a2a4b5b790f0",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": null,
            "size": 102849,
            "upload_time": "2024-02-20T13:15:30",
            "upload_time_iso_8601": "2024-02-20T13:15:30.886584Z",
            "url": "https://files.pythonhosted.org/packages/53/d3/a19c8420a657aed603a08dab5e96872df1d450b65782733b5d2c2cd4b424/CSF_3DFin-1.3.0-cp310-cp310-win32.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "be9bcedacd7e8635d1884bbf14a70fc3f7e9ffcba6ea70efc59e36aec50afb94",
                "md5": "f1bec62affda5286ec6863d7f68accd9",
                "sha256": "472e92816c8372ee4ba6ddf92bd27b770783518260b0bfa7f15d7b728373fe57"
            },
            "downloads": -1,
            "filename": "CSF_3DFin-1.3.0-cp310-cp310-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "f1bec62affda5286ec6863d7f68accd9",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": null,
            "size": 129321,
            "upload_time": "2024-02-20T13:15:32",
            "upload_time_iso_8601": "2024-02-20T13:15:32.140666Z",
            "url": "https://files.pythonhosted.org/packages/be/9b/cedacd7e8635d1884bbf14a70fc3f7e9ffcba6ea70efc59e36aec50afb94/CSF_3DFin-1.3.0-cp310-cp310-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "e78c3803dece36afd794ad3d696cabdd7523417365a7ac30ffff63a420608996",
                "md5": "326ac3ee810ab9d2b04dd4de327f9da3",
                "sha256": "04fd25fd34ad30df40f46021573495e3cb132518d5e45c0ee7b45127d63450b6"
            },
            "downloads": -1,
            "filename": "CSF_3DFin-1.3.0-cp311-cp311-macosx_10_9_x86_64.whl",
            "has_sig": false,
            "md5_digest": "326ac3ee810ab9d2b04dd4de327f9da3",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": null,
            "size": 162030,
            "upload_time": "2024-02-20T13:15:34",
            "upload_time_iso_8601": "2024-02-20T13:15:34.025450Z",
            "url": "https://files.pythonhosted.org/packages/e7/8c/3803dece36afd794ad3d696cabdd7523417365a7ac30ffff63a420608996/CSF_3DFin-1.3.0-cp311-cp311-macosx_10_9_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "f32fb7f37d3d6f8773ff4538b20f4713ecc2f540fc7bee7810a32830bd1c8741",
                "md5": "121f6d0050dbf2e937f1c2b46698ef0a",
                "sha256": "4279f46f2379c623ca738382dbbfde639425626ede47a80bc30588522a728d52"
            },
            "downloads": -1,
            "filename": "CSF_3DFin-1.3.0-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl",
            "has_sig": false,
            "md5_digest": "121f6d0050dbf2e937f1c2b46698ef0a",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": null,
            "size": 1482779,
            "upload_time": "2024-02-20T13:15:36",
            "upload_time_iso_8601": "2024-02-20T13:15:36.160476Z",
            "url": "https://files.pythonhosted.org/packages/f3/2f/b7f37d3d6f8773ff4538b20f4713ecc2f540fc7bee7810a32830bd1c8741/CSF_3DFin-1.3.0-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "297d4234d5123f0e12e209b505e72396334362a469737ec97e4a39e49fcecd1b",
                "md5": "f70e68ef8f08d7bc0fb6a1e46ad45531",
                "sha256": "a24d9da81fef6cc5940483754bde96de75fe678b0568df27a432bd689acb6781"
            },
            "downloads": -1,
            "filename": "CSF_3DFin-1.3.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "f70e68ef8f08d7bc0fb6a1e46ad45531",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": null,
            "size": 1522703,
            "upload_time": "2024-02-20T13:15:37",
            "upload_time_iso_8601": "2024-02-20T13:15:37.959627Z",
            "url": "https://files.pythonhosted.org/packages/29/7d/4234d5123f0e12e209b505e72396334362a469737ec97e4a39e49fcecd1b/CSF_3DFin-1.3.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "22e725cf7b9a3a2834533b1bed94abe5aec2eef6b09f243f0844789f56a9591b",
                "md5": "251b71bcd20fc0de8085b94fb3750f2f",
                "sha256": "c1222980d7c2b10ffe14df9e9744cac81149954241ff2d6df0e91fc1d63c0451"
            },
            "downloads": -1,
            "filename": "CSF_3DFin-1.3.0-cp311-cp311-musllinux_1_1_i686.whl",
            "has_sig": false,
            "md5_digest": "251b71bcd20fc0de8085b94fb3750f2f",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": null,
            "size": 2030933,
            "upload_time": "2024-02-20T13:15:39",
            "upload_time_iso_8601": "2024-02-20T13:15:39.716442Z",
            "url": "https://files.pythonhosted.org/packages/22/e7/25cf7b9a3a2834533b1bed94abe5aec2eef6b09f243f0844789f56a9591b/CSF_3DFin-1.3.0-cp311-cp311-musllinux_1_1_i686.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "80ad3b3c3615451488a04269a3851be34b4d384c437abd485c974b002f057f8e",
                "md5": "4242e8614cc680e704ab93d0773b4e76",
                "sha256": "e10d751f10c599e5fd53a3ab19a9ba3d353b55c8cfe8034f86f489a964fe25fc"
            },
            "downloads": -1,
            "filename": "CSF_3DFin-1.3.0-cp311-cp311-musllinux_1_1_x86_64.whl",
            "has_sig": false,
            "md5_digest": "4242e8614cc680e704ab93d0773b4e76",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": null,
            "size": 2037483,
            "upload_time": "2024-02-20T13:15:41",
            "upload_time_iso_8601": "2024-02-20T13:15:41.623661Z",
            "url": "https://files.pythonhosted.org/packages/80/ad/3b3c3615451488a04269a3851be34b4d384c437abd485c974b002f057f8e/CSF_3DFin-1.3.0-cp311-cp311-musllinux_1_1_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "ca9fa60dd50308a7f208d68c76ed046d2437d6d0d96e686c99ab0c237619c2a1",
                "md5": "7235f85dfd0dd23cf80a07ec87ffc10c",
                "sha256": "16e8cd7dbb33cce18ea78f526f35defc94b417b3e41fc3033ff9629d887b90cf"
            },
            "downloads": -1,
            "filename": "CSF_3DFin-1.3.0-cp311-cp311-win32.whl",
            "has_sig": false,
            "md5_digest": "7235f85dfd0dd23cf80a07ec87ffc10c",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": null,
            "size": 102855,
            "upload_time": "2024-02-20T13:15:42",
            "upload_time_iso_8601": "2024-02-20T13:15:42.822849Z",
            "url": "https://files.pythonhosted.org/packages/ca/9f/a60dd50308a7f208d68c76ed046d2437d6d0d96e686c99ab0c237619c2a1/CSF_3DFin-1.3.0-cp311-cp311-win32.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "567bab72088983a3fb9b45f15324ac47d6589183f37a42365644cf41ec2c4b16",
                "md5": "048f94d129fefa16a378d4cb1135bed6",
                "sha256": "d47e150d3228fcc0587c2fa7ae85cabaddec989eb388bae50ba0b44b30bb5320"
            },
            "downloads": -1,
            "filename": "CSF_3DFin-1.3.0-cp311-cp311-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "048f94d129fefa16a378d4cb1135bed6",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": null,
            "size": 129319,
            "upload_time": "2024-02-20T13:15:43",
            "upload_time_iso_8601": "2024-02-20T13:15:43.940400Z",
            "url": "https://files.pythonhosted.org/packages/56/7b/ab72088983a3fb9b45f15324ac47d6589183f37a42365644cf41ec2c4b16/CSF_3DFin-1.3.0-cp311-cp311-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "2c97427d4affdb113ed18195c75e512585866a02dae5e31cc41fd41435227e74",
                "md5": "ea8fe161b46be42f703fc359291f2a8a",
                "sha256": "c5e1c92acde7ba318bf8f744b743af811d36c63b55aff9d9212f3347df4151ed"
            },
            "downloads": -1,
            "filename": "CSF_3DFin-1.3.0-cp312-cp312-macosx_10_9_x86_64.whl",
            "has_sig": false,
            "md5_digest": "ea8fe161b46be42f703fc359291f2a8a",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": null,
            "size": 163148,
            "upload_time": "2024-02-20T13:15:45",
            "upload_time_iso_8601": "2024-02-20T13:15:45.720211Z",
            "url": "https://files.pythonhosted.org/packages/2c/97/427d4affdb113ed18195c75e512585866a02dae5e31cc41fd41435227e74/CSF_3DFin-1.3.0-cp312-cp312-macosx_10_9_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "588cdc265a9e4a36bf7fcc9f793165dfe31d80c0b58c4f65f8f10ce8ef95c306",
                "md5": "4d915031162e5626f6d450256d0d2c6d",
                "sha256": "39d8d29e588b6408c25c2ab2b2a9286eb0cef1e7e051e47d6bb5ab00171853aa"
            },
            "downloads": -1,
            "filename": "CSF_3DFin-1.3.0-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl",
            "has_sig": false,
            "md5_digest": "4d915031162e5626f6d450256d0d2c6d",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": null,
            "size": 1491464,
            "upload_time": "2024-02-20T13:15:47",
            "upload_time_iso_8601": "2024-02-20T13:15:47.376452Z",
            "url": "https://files.pythonhosted.org/packages/58/8c/dc265a9e4a36bf7fcc9f793165dfe31d80c0b58c4f65f8f10ce8ef95c306/CSF_3DFin-1.3.0-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "ec68f0f5b67888d3071c35f935a5131dee132b5455c461f53fc034a405551205",
                "md5": "aec63356d68c453dfbfd138aa1e35142",
                "sha256": "3247a9839ef0adfa3c440f232e6ac8af425bd1f66603e49574b7bc4281e601d6"
            },
            "downloads": -1,
            "filename": "CSF_3DFin-1.3.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "aec63356d68c453dfbfd138aa1e35142",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": null,
            "size": 1534221,
            "upload_time": "2024-02-20T13:15:49",
            "upload_time_iso_8601": "2024-02-20T13:15:49.609976Z",
            "url": "https://files.pythonhosted.org/packages/ec/68/f0f5b67888d3071c35f935a5131dee132b5455c461f53fc034a405551205/CSF_3DFin-1.3.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "76cc57a837cc055348f7dc45b02441fe1df9908221b4590fb740375e0eecbe38",
                "md5": "edf91a8feb78148e6cdd2795fe6da6c3",
                "sha256": "b5599b3797b818810bc89690fee505ed0dd799e5379797d61b5dae847f840e88"
            },
            "downloads": -1,
            "filename": "CSF_3DFin-1.3.0-cp312-cp312-musllinux_1_1_i686.whl",
            "has_sig": false,
            "md5_digest": "edf91a8feb78148e6cdd2795fe6da6c3",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": null,
            "size": 2034006,
            "upload_time": "2024-02-20T13:15:52",
            "upload_time_iso_8601": "2024-02-20T13:15:52.480908Z",
            "url": "https://files.pythonhosted.org/packages/76/cc/57a837cc055348f7dc45b02441fe1df9908221b4590fb740375e0eecbe38/CSF_3DFin-1.3.0-cp312-cp312-musllinux_1_1_i686.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "9b0ba6ef0e7787d331e776cbb2ca0c94e253e151934be2f335b998fa9342957c",
                "md5": "2550cc5269c0f75cc069d6adfc1d3497",
                "sha256": "08cb9e04583d0b830f83971d1bb21af43c946b3a8a3bd8533f7a9287c980cc6d"
            },
            "downloads": -1,
            "filename": "CSF_3DFin-1.3.0-cp312-cp312-musllinux_1_1_x86_64.whl",
            "has_sig": false,
            "md5_digest": "2550cc5269c0f75cc069d6adfc1d3497",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": null,
            "size": 2042271,
            "upload_time": "2024-02-20T13:15:54",
            "upload_time_iso_8601": "2024-02-20T13:15:54.683700Z",
            "url": "https://files.pythonhosted.org/packages/9b/0b/a6ef0e7787d331e776cbb2ca0c94e253e151934be2f335b998fa9342957c/CSF_3DFin-1.3.0-cp312-cp312-musllinux_1_1_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "e520a075dacb375dc59f5d4c6c7d679648c795603322c8be487fc791047fa52a",
                "md5": "7a02c81658414ff8073c6fa61251c1b9",
                "sha256": "aa1db38d2530558173a41b6369415a0b75de39852867278cc91a07604e65e414"
            },
            "downloads": -1,
            "filename": "CSF_3DFin-1.3.0-cp312-cp312-win32.whl",
            "has_sig": false,
            "md5_digest": "7a02c81658414ff8073c6fa61251c1b9",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": null,
            "size": 103356,
            "upload_time": "2024-02-20T13:15:56",
            "upload_time_iso_8601": "2024-02-20T13:15:56.814186Z",
            "url": "https://files.pythonhosted.org/packages/e5/20/a075dacb375dc59f5d4c6c7d679648c795603322c8be487fc791047fa52a/CSF_3DFin-1.3.0-cp312-cp312-win32.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "d163a07702603e719eebde7ac313b2da12e544d23eaaaa1e84b53258f6bed4fd",
                "md5": "cd015ce0b92464324cae701a56100cd3",
                "sha256": "c582a40cf309f4a51a15df9a909d3c3c34f7bc6c6980d1fdfc71bf338c053dd1"
            },
            "downloads": -1,
            "filename": "CSF_3DFin-1.3.0-cp312-cp312-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "cd015ce0b92464324cae701a56100cd3",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": null,
            "size": 128715,
            "upload_time": "2024-02-20T13:15:58",
            "upload_time_iso_8601": "2024-02-20T13:15:58.073871Z",
            "url": "https://files.pythonhosted.org/packages/d1/63/a07702603e719eebde7ac313b2da12e544d23eaaaa1e84b53258f6bed4fd/CSF_3DFin-1.3.0-cp312-cp312-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "f9ce5758128d339a8df9c09b2ea90732e6bcf40ab16c360648d9424b0b6e74ea",
                "md5": "9db601fd5c0c9d038b1f44bd9fa0731e",
                "sha256": "8fda30df74220bd281bd23ebb359d5756b35833a0a3ff2e86bd6ed83c0c7462a"
            },
            "downloads": -1,
            "filename": "CSF_3DFin-1.3.0-cp39-cp39-macosx_10_9_x86_64.whl",
            "has_sig": false,
            "md5_digest": "9db601fd5c0c9d038b1f44bd9fa0731e",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": null,
            "size": 162022,
            "upload_time": "2024-02-20T13:16:00",
            "upload_time_iso_8601": "2024-02-20T13:16:00.041482Z",
            "url": "https://files.pythonhosted.org/packages/f9/ce/5758128d339a8df9c09b2ea90732e6bcf40ab16c360648d9424b0b6e74ea/CSF_3DFin-1.3.0-cp39-cp39-macosx_10_9_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "1fe12f268bda28d5ca9e95e28de3f9693f9e53d9404b4290051b2a91146876cc",
                "md5": "48d0add753d4c2fdf3c47a993439307a",
                "sha256": "b7281956828e606164abb5cff78b6bd18abdd838697d58af9ec07f329ba2ff92"
            },
            "downloads": -1,
            "filename": "CSF_3DFin-1.3.0-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl",
            "has_sig": false,
            "md5_digest": "48d0add753d4c2fdf3c47a993439307a",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": null,
            "size": 1466440,
            "upload_time": "2024-02-20T13:16:01",
            "upload_time_iso_8601": "2024-02-20T13:16:01.968726Z",
            "url": "https://files.pythonhosted.org/packages/1f/e1/2f268bda28d5ca9e95e28de3f9693f9e53d9404b4290051b2a91146876cc/CSF_3DFin-1.3.0-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "730a6777096a7346ae8c751fd90eb41a7a57e8ec33b787e4bb3cb793ab054b1d",
                "md5": "9b810215098fb58daf254eeaf4551f1c",
                "sha256": "ce27ba39256690f4bb5b5c7b59e1fbbde7ee92d2edaa04a79a6a215e2cfa7a6b"
            },
            "downloads": -1,
            "filename": "CSF_3DFin-1.3.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "9b810215098fb58daf254eeaf4551f1c",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": null,
            "size": 1504126,
            "upload_time": "2024-02-20T13:16:03",
            "upload_time_iso_8601": "2024-02-20T13:16:03.584363Z",
            "url": "https://files.pythonhosted.org/packages/73/0a/6777096a7346ae8c751fd90eb41a7a57e8ec33b787e4bb3cb793ab054b1d/CSF_3DFin-1.3.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "5a2864e5cbd303055b32999018456affe9a65aa28a5c74a706cb71b022af17a5",
                "md5": "8d4bf1cd14ec4ed97e61e9e7fc326538",
                "sha256": "4f93c6c91ba747c3e8461064575395a699904960f1dc88ccf290f44368edac88"
            },
            "downloads": -1,
            "filename": "CSF_3DFin-1.3.0-cp39-cp39-musllinux_1_1_i686.whl",
            "has_sig": false,
            "md5_digest": "8d4bf1cd14ec4ed97e61e9e7fc326538",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": null,
            "size": 2017055,
            "upload_time": "2024-02-20T13:16:05",
            "upload_time_iso_8601": "2024-02-20T13:16:05.915939Z",
            "url": "https://files.pythonhosted.org/packages/5a/28/64e5cbd303055b32999018456affe9a65aa28a5c74a706cb71b022af17a5/CSF_3DFin-1.3.0-cp39-cp39-musllinux_1_1_i686.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "c4d0cdbdd1a6a02a24fc503ac7848cb5496befda6e07750fb519dea8a60e3c0c",
                "md5": "bd355f1c64a2f205b53512ffb8e8bcc9",
                "sha256": "f19df0610a6fd20967c55b3f1587572035d8c91736fc3f13d0421de50645d102"
            },
            "downloads": -1,
            "filename": "CSF_3DFin-1.3.0-cp39-cp39-musllinux_1_1_x86_64.whl",
            "has_sig": false,
            "md5_digest": "bd355f1c64a2f205b53512ffb8e8bcc9",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": null,
            "size": 2022719,
            "upload_time": "2024-02-20T13:16:07",
            "upload_time_iso_8601": "2024-02-20T13:16:07.840681Z",
            "url": "https://files.pythonhosted.org/packages/c4/d0/cdbdd1a6a02a24fc503ac7848cb5496befda6e07750fb519dea8a60e3c0c/CSF_3DFin-1.3.0-cp39-cp39-musllinux_1_1_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "d415a19a8ba0dc97d76da81c194cc637813b4b9bbd20e79f2f9a27ecc42823ae",
                "md5": "3463b09c3773e2ee1dbe1acd911934da",
                "sha256": "fd824f0ce17eb0126726bcd153ad5081e9c2e782e01f141f4edb5497e2bc7645"
            },
            "downloads": -1,
            "filename": "CSF_3DFin-1.3.0-cp39-cp39-win32.whl",
            "has_sig": false,
            "md5_digest": "3463b09c3773e2ee1dbe1acd911934da",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": null,
            "size": 102715,
            "upload_time": "2024-02-20T13:16:09",
            "upload_time_iso_8601": "2024-02-20T13:16:09.336067Z",
            "url": "https://files.pythonhosted.org/packages/d4/15/a19a8ba0dc97d76da81c194cc637813b4b9bbd20e79f2f9a27ecc42823ae/CSF_3DFin-1.3.0-cp39-cp39-win32.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "41161e0be057c58b4b6f2833a7c604eb3b99644a9733a351769997b5b33ae5fc",
                "md5": "b61d52e7aff2194a3ce051bdcf10bf85",
                "sha256": "1cbe6600d83477298e2f07de6ad0788293ac3b667f023997387e97f0e557640a"
            },
            "downloads": -1,
            "filename": "CSF_3DFin-1.3.0-cp39-cp39-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "b61d52e7aff2194a3ce051bdcf10bf85",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": null,
            "size": 129330,
            "upload_time": "2024-02-20T13:16:10",
            "upload_time_iso_8601": "2024-02-20T13:16:10.778994Z",
            "url": "https://files.pythonhosted.org/packages/41/16/1e0be057c58b4b6f2833a7c604eb3b99644a9733a351769997b5b33ae5fc/CSF_3DFin-1.3.0-cp39-cp39-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "c7a31e4612a5ff6ef08f885e0d8e83ba972cbe767bbd07a6fb5f9d2f47725554",
                "md5": "5a6e4f1fc42bb54f24e29db6e14cf041",
                "sha256": "2a65c1d25591ff788b7a883daace9ec65862ed6443cb22ea56ca99017b1714bc"
            },
            "downloads": -1,
            "filename": "CSF_3DFin-1.3.0.tar.gz",
            "has_sig": false,
            "md5_digest": "5a6e4f1fc42bb54f24e29db6e14cf041",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": null,
            "size": 938057,
            "upload_time": "2024-02-20T13:15:17",
            "upload_time_iso_8601": "2024-02-20T13:15:17.328055Z",
            "url": "https://files.pythonhosted.org/packages/c7/a3/1e4612a5ff6ef08f885e0d8e83ba972cbe767bbd07a6fb5f9d2f47725554/CSF_3DFin-1.3.0.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2024-02-20 13:15:17",
    "github": false,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "lcname": "csf-3dfin"
}
        
Elapsed time: 2.99352s