Skip to main content

Tomoto, The Topic Modeling Tool for Python

Project description

What is tomotopy?

tomotopy is a Python extension of tomoto (Topic Modeling Tool) which is a Gibbs-sampling based topic model library written in C++. It utilizes a vectorization of modern CPUs for maximizing speed. The current version of tomoto supports several major topic models including

  • Latent Dirichlet Allocation (tomotopy.LDAModel)

  • Labeled LDA (tomotopy.LLDAModel)

  • Partially Labeled LDA (tomotopy.PLDAModel)

  • Supervised LDA (tomotopy.SLDAModel)

  • Dirichlet Multinomial Regression (tomotopy.DMRModel)

  • Generalized Dirichlet Multinomial Regression (tomotopy.GDMRModel)

  • Hierarchical Dirichlet Process (tomotopy.HDPModel)

  • Hierarchical LDA (tomotopy.HLDAModel)

  • Multi Grain LDA (tomotopy.MGLDAModel)

  • Pachinko Allocation (tomotopy.PAModel)

  • Hierarchical PA (tomotopy.HPAModel)

  • Correlated Topic Model (tomotopy.CTModel)

  • Dynamic Topic Model (tomotopy.DTModel).

The most recent version of tomotopy is 0.10.2.

https://badge.fury.io/py/tomotopy.svg

Getting Started

You can install tomotopy easily using pip. (https://pypi.org/project/tomotopy/)

$ pip install --upgrade pip
$ pip install tomotopy

The supported OS and Python versions are:

  • Linux (x86-64) with Python >= 3.5

  • macOS >= 10.13 with Python >= 3.5

  • Windows 7 or later (x86, x86-64) with Python >= 3.5

  • Other OS with Python >= 3.5: Compilation from source code required (with c++11 compatible compiler)

After installing, you can start tomotopy by just importing.

import tomotopy as tp
print(tp.isa) # prints 'avx2', 'avx', 'sse2' or 'none'

Currently, tomotopy can exploits AVX2, AVX or SSE2 SIMD instruction set for maximizing performance. When the package is imported, it will check available instruction sets and select the best option. If tp.isa tells none, iterations of training may take a long time. But, since most of modern Intel or AMD CPUs provide SIMD instruction set, the SIMD acceleration could show a big improvement.

Here is a sample code for simple LDA training of texts from ‘sample.txt’ file.

import tomotopy as tp
mdl = tp.LDAModel(k=20)
for line in open('sample.txt'):
    mdl.add_doc(line.strip().split())

for i in range(0, 100, 10):
    mdl.train(10)
    print('Iteration: {}\tLog-likelihood: {}'.format(i, mdl.ll_per_word))

for k in range(mdl.k):
    print('Top 10 words of topic #{}'.format(k))
    print(mdl.get_topic_words(k, top_n=10))

mdl.summary()

Performance of tomotopy

tomotopy uses Collapsed Gibbs-Sampling(CGS) to infer the distribution of topics and the distribution of words. Generally CGS converges more slowly than Variational Bayes(VB) that [gensim’s LdaModel] uses, but its iteration can be computed much faster. In addition, tomotopy can take advantage of multicore CPUs with a SIMD instruction set, which can result in faster iterations.

[gensim’s LdaModel]: https://radimrehurek.com/gensim/models/ldamodel.html

Following chart shows the comparison of LDA model’s running time between tomotopy and gensim. The input data consists of 1000 random documents from English Wikipedia with 1,506,966 words (about 10.1 MB). tomotopy trains 200 iterations and gensim trains 10 iterations.

https://bab2min.github.io/tomotopy/images/tmt_i5.png

↑ Performance in Intel i5-6600, x86-64 (4 cores)

https://bab2min.github.io/tomotopy/images/tmt_xeon.png

↑ Performance in Intel Xeon E5-2620 v4, x86-64 (8 cores, 16 threads)

https://bab2min.github.io/tomotopy/images/tmt_r7_3700x.png

↑ Performance in AMD Ryzen7 3700X, x86-64 (8 cores, 16 threads)

Although tomotopy iterated 20 times more, the overall running time was 5~10 times faster than gensim. And it yields a stable result.

It is difficult to compare CGS and VB directly because they are totaly different techniques. But from a practical point of view, we can compare the speed and the result between them. The following chart shows the log-likelihood per word of two models’ result.

https://bab2min.github.io/tomotopy/images/LLComp.png

The SIMD instruction set has a great effect on performance. Following is a comparison between SIMD instruction sets.

https://bab2min.github.io/tomotopy/images/SIMDComp.png

Fortunately, most of recent x86-64 CPUs provide AVX2 instruction set, so we can enjoy the performance of AVX2.

Vocabulary controlling using CF and DF

CF(collection frequency) and DF(document frequency) are concepts used in information retreival, and each represents the total number of times the word appears in the corpus and the number of documents in which the word appears within the corpus, respectively. tomotopy provides these two measures under the parameters of min_cf and min_df to trim low frequency words when building the corpus.

For example, let’s say we have 5 documents #0 ~ #4 which are composed of the following words:

#0 : a, b, c, d, e, c
#1 : a, b, e, f
#2 : c, d, c
#3 : a, e, f, g
#4 : a, b, g

Both CF of a and CF of c are 4 because it appears 4 times in the entire corpus. But DF of a is 4 and DF of c is 2 because a appears in #0, #1, #3 and #4 and c only appears in #0 and #2. So if we trim low frequency words using min_cf=3, the result becomes follows:

(d, f and g are removed.)
#0 : a, b, c, e, c
#1 : a, b, e
#2 : c, c
#3 : a, e
#4 : a, b

However when min_df=3 the result is like :

(c, d, f and g are removed.)
#0 : a, b, e
#1 : a, b, e
#2 : (empty doc)
#3 : a, e
#4 : a, b

As we can see, min_df is a stronger criterion than min_cf. In performing topic modeling, words that appear repeatedly in only one document do not contribute to estimating the topic-word distribution. So, removing words with low df is a good way to reduce model size while preserving the results of the final model. In short, please prefer using min_df to min_cf.

Model Save and Load

tomotopy provides save and load method for each topic model class, so you can save the model into the file whenever you want, and re-load it from the file.

import tomotopy as tp

mdl = tp.HDPModel()
for line in open('sample.txt'):
    mdl.add_doc(line.strip().split())

for i in range(0, 100, 10):
    mdl.train(10)
    print('Iteration: {}\tLog-likelihood: {}'.format(i, mdl.ll_per_word))

# save into file
mdl.save('sample_hdp_model.bin')

# load from file
mdl = tp.HDPModel.load('sample_hdp_model.bin')
for k in range(mdl.k):
    if not mdl.is_live_topic(k): continue
    print('Top 10 words of topic #{}'.format(k))
    print(mdl.get_topic_words(k, top_n=10))

# the saved model is HDP model,
# so when you load it by LDA model, it will raise an exception
mdl = tp.LDAModel.load('sample_hdp_model.bin')

When you load the model from a file, a model type in the file should match the class of methods.

See more at tomotopy.LDAModel.save and tomotopy.LDAModel.load methods.

Documents in the Model and out of the Model

We can use Topic Model for two major purposes. The basic one is to discover topics from a set of documents as a result of trained model, and the more advanced one is to infer topic distributions for unseen documents by using trained model.

We named the document in the former purpose (used for model training) as document in the model, and the document in the later purpose (unseen document during training) as document out of the model.

In tomotopy, these two different kinds of document are generated differently. A document in the model can be created by tomotopy.LDAModel.add_doc method. add_doc can be called before tomotopy.LDAModel.train starts. In other words, after train called, add_doc cannot add a document into the model because the set of document used for training has become fixed.

To acquire the instance of the created document, you should use tomotopy.LDAModel.docs like:

mdl = tp.LDAModel(k=20)
idx = mdl.add_doc(words)
if idx < 0: raise RuntimeError("Failed to add doc")
doc_inst = mdl.docs[idx]
# doc_inst is an instance of the added document

A document out of the model is generated by tomotopy.LDAModel.make_doc method. make_doc can be called only after train starts. If you use make_doc before the set of document used for training has become fixed, you may get wrong results. Since make_doc returns the instance directly, you can use its return value for other manipulations.

mdl = tp.LDAModel(k=20)
# add_doc ...
mdl.train(100)
doc_inst = mdl.make_doc(unseen_doc) # doc_inst is an instance of the unseen document

Inference for Unseen Documents

If a new document is created by tomotopy.LDAModel.make_doc, its topic distribution can be inferred by the model. Inference for unseen document should be performed using tomotopy.LDAModel.infer method.

mdl = tp.LDAModel(k=20)
# add_doc ...
mdl.train(100)
doc_inst = mdl.make_doc(unseen_doc)
topic_dist, ll = mdl.infer(doc_inst)
print("Topic Distribution for Unseen Docs: ", topic_dist)
print("Log-likelihood of inference: ", ll)

The infer method can infer only one instance of tomotopy.Document or a list of instances of tomotopy.Document. See more at tomotopy.LDAModel.infer.

Parallel Sampling Algorithms

Since version 0.5.0, tomotopy allows you to choose a parallelism algorithm. The algorithm provided in versions prior to 0.4.2 is COPY_MERGE, which is provided for all topic models. The new algorithm PARTITION, available since 0.5.0, makes training generally faster and more memory-efficient, but it is available at not all topic models.

The following chart shows the speed difference between the two algorithms based on the number of topics and the number of workers.

https://bab2min.github.io/tomotopy/images/algo_comp.png https://bab2min.github.io/tomotopy/images/algo_comp2.png

Performance by Version

Performance changes by version are shown in the following graph. The time it takes to run the LDA model train with 1000 iteration was measured. (Docs: 11314, Vocab: 60382, Words: 2364724, Intel Xeon Gold 5120 @2.2GHz)

https://bab2min.github.io/tomotopy/images/lda-perf-t1.png https://bab2min.github.io/tomotopy/images/lda-perf-t4.png https://bab2min.github.io/tomotopy/images/lda-perf-t8.png

Pining Topics using Word Priors

Since version 0.6.0, a new method tomotopy.LDAModel.set_word_prior has been added. It allows you to control word prior for each topic. For example, we can set the weight of the word ‘church’ to 1.0 in topic 0, and the weight to 0.1 in the rest of the topics by following codes. This means that the probability that the word ‘church’ is assigned to topic 0 is 10 times higher than the probability of being assigned to another topic. Therefore, most of ‘church’ is assigned to topic 0, so topic 0 contains many words related to ‘church’. This allows to manipulate some topics to be placed at a specific topic number.

import tomotopy as tp
mdl = tp.LDAModel(k=20)

# add documents into `mdl`

# setting word prior
mdl.set_word_prior('church', [1.0 if k == 0 else 0.1 for k in range(20)])

See word_prior_example in example.py for more details.

Examples

You can find an example python code of tomotopy at https://github.com/bab2min/tomotopy/blob/main/examples/ .

You can also get the data file used in the example code at https://drive.google.com/file/d/18OpNijd4iwPyYZ2O7pQoPyeTAKEXa71J/view .

License

tomotopy is licensed under the terms of MIT License, meaning you can use it for any reasonable purpose and remain in complete ownership of all the documentation you produce.

History

  • 0.10.2 (2021-02-16)
    • An issue was fixed where tomotopy.CTModel.train fails with large K.

    • An issue was fixed where tomotopy.utils.Corpus loses their uid values.

  • 0.10.1 (2021-02-14)
    • An issue was fixed where tomotopy.utils.Corpus.extract_ngrams craches with empty input.

    • An issue was fixed where tomotopy.LDAModel.infer raises exception with valid input.

    • An issue was fixed where tomotopy.HLDAModel.infer generates wrong tomotopy.Document.path.

    • Since a new parameter freeze_topics for tomotopy.HLDAModel.train was added, you can control whether to create a new topic or not when training.

  • 0.10.0 (2020-12-19)
    • The interface of tomotopy.utils.Corpus and of tomotopy.LDAModel.docs were unified. Now you can access the document in corpus with the same manner.

    • __getitem__ of tomotopy.utils.Corpus was improved. Not only indexing by int, but also by Iterable[int], slicing are supported. Also indexing by uid is supported.

    • New methods tomotopy.utils.Corpus.extract_ngrams and tomotopy.utils.Corpus.concat_ngrams were added. They extracts n-gram collocations using PMI and concatenates them into a single words.

    • A new method tomotopy.LDAModel.add_corpus was added, and tomotopy.LDAModel.infer can receive corpus as input.

    • A new module tomotopy.coherence was added. It provides the way to calculate coherence of the model.

    • A paramter window_size was added to tomotopy.label.FoRelevance.

    • An issue was fixed where NaN often occurs when training tomotopy.HDPModel.

    • Now Python3.9 is supported.

    • A dependency to py-cpuinfo was removed and the initializing of the module was improved.

  • 0.9.1 (2020-08-08)
    • Memory leaks of version 0.9.0 was fixed.

    • tomotopy.CTModel.summary() was fixed.

  • 0.9.0 (2020-08-04)
    • The tomotopy.LDAModel.summary() method, which prints human-readable summary of the model, has been added.

    • The random number generator of package has been replaced with [EigenRand]. It speeds up the random number generation and solves the result difference between platforms.

    • Due to above, even if seed is the same, the model training result may be different from the version before 0.9.0.

    • Fixed a training error in tomotopy.HDPModel.

    • tomotopy.DMRModel.alpha now shows Dirichlet prior of per-document topic distribution by metadata.

    • tomotopy.DTModel.get_count_by_topics() has been modified to return a 2-dimensional ndarray.

    • tomotopy.DTModel.alpha has been modified to return the same value as tomotopy.DTModel.get_alpha().

    • Fixed an issue where the metadata value could not be obtained for the document of tomotopy.GDMRModel.

    • tomotopy.HLDAModel.alpha now shows Dirichlet prior of per-document depth distribution.

    • tomotopy.LDAModel.global_step has been added.

    • tomotopy.MGLDAModel.get_count_by_topics() now returns the word count for both global and local topics.

    • tomotopy.PAModel.alpha, tomotopy.PAModel.subalpha, and tomotopy.PAModel.get_count_by_super_topic() have been added.

[EigenRand]: https://github.com/bab2min/EigenRand

  • 0.8.2 (2020-07-14)
    • New properties tomotopy.DTModel.num_timepoints and tomotopy.DTModel.num_docs_by_timepoint have been added.

    • A bug which causes different results with the different platform even if seeds were the same was partially fixed. As a result of this fix, now tomotopy in 32 bit yields different training results from earlier version.

  • 0.8.1 (2020-06-08)
    • A bug where tomotopy.LDAModel.used_vocabs returned an incorrect value was fixed.

    • Now tomotopy.CTModel.prior_cov returns a covariance matrix with shape [k, k].

    • Now tomotopy.CTModel.get_correlations with empty arguments returns a correlation matrix with shape [k, k].

  • 0.8.0 (2020-06-06)
    • Since NumPy was introduced in tomotopy, many methods and properties of tomotopy return not just list, but numpy.ndarray now.

    • Tomotopy has a new dependency NumPy >= 1.10.0.

    • A wrong estimation of tomotopy.HDPModel.infer was fixed.

    • A new method about converting HDPModel to LDAModel was added.

    • New properties including tomotopy.LDAModel.used_vocabs, tomotopy.LDAModel.used_vocab_freq and tomotopy.LDAModel.used_vocab_df were added into topic models.

    • A new g-DMR topic model(tomotopy.GDMRModel) was added.

    • An error at initializing tomotopy.label.FoRelevance in macOS was fixed.

    • An error that occured when using tomotopy.utils.Corpus created without raw parameters was fixed.

  • 0.7.1 (2020-05-08)
    • tomotopy.Document.path was added for tomotopy.HLDAModel.

    • A memory corruption bug in tomotopy.label.PMIExtractor was fixed.

    • A compile error in gcc 7 was fixed.

  • 0.7.0 (2020-04-18)
    • tomotopy.DTModel was added into the package.

    • A bug in tomotopy.utils.Corpus.save was fixed.

    • A new method tomotopy.Document.get_count_vector was added into Document class.

    • Now linux distributions use manylinux2010 and an additional optimization is applied.

  • 0.6.2 (2020-03-28)
    • A critical bug related to save and load was fixed. Version 0.6.0 and 0.6.1 have been removed from releases.

  • 0.6.1 (2020-03-22) (removed)
    • A bug related to module loading was fixed.

  • 0.6.0 (2020-03-22) (removed)
    • tomotopy.utils.Corpus class that manages multiple documents easily was added.

    • tomotopy.LDAModel.set_word_prior method that controls word-topic priors of topic models was added.

    • A new argument min_df that filters words based on document frequency was added into every topic model’s __init__.

    • tomotopy.label, the submodule about topic labeling was added. Currently, only tomotopy.label.FoRelevance is provided.

  • 0.5.2 (2020-03-01)
    • A segmentation fault problem was fixed in tomotopy.LLDAModel.add_doc.

    • A bug was fixed that infer of tomotopy.HDPModel sometimes crashes the program.

    • A crash issue was fixed of tomotopy.LDAModel.infer with ps=tomotopy.ParallelScheme.PARTITION, together=True.

  • 0.5.1 (2020-01-11)
    • A bug was fixed that tomotopy.SLDAModel.make_doc doesn’t support missing values for y.

    • Now tomotopy.SLDAModel fully supports missing values for response variables y. Documents with missing values (NaN) are included in modeling topic, but excluded from regression of response variables.

  • 0.5.0 (2019-12-30)
    • Now tomotopy.PAModel.infer returns both topic distribution nd sub-topic distribution.

    • New methods get_sub_topics and get_sub_topic_dist were added into tomotopy.Document. (for PAModel)

    • New parameter parallel was added for tomotopy.LDAModel.train and tomotopy.LDAModel.infer method. You can select parallelism algorithm by changing this parameter.

    • tomotopy.ParallelScheme.PARTITION, a new algorithm, was added. It works efficiently when the number of workers is large, the number of topics or the size of vocabulary is big.

    • A bug where rm_top didn’t work at min_cf < 2 was fixed.

  • 0.4.2 (2019-11-30)
    • Wrong topic assignments of tomotopy.LLDAModel and tomotopy.PLDAModel were fixed.

    • Readable __repr__ of tomotopy.Document and tomotopy.Dictionary was implemented.

  • 0.4.1 (2019-11-27)
    • A bug at init function of tomotopy.PLDAModel was fixed.

  • 0.4.0 (2019-11-18)
    • New models including tomotopy.PLDAModel and tomotopy.HLDAModel were added into the package.

  • 0.3.1 (2019-11-05)
    • An issue where get_topic_dist() returns incorrect value when min_cf or rm_top is set was fixed.

    • The return value of get_topic_dist() of tomotopy.MGLDAModel document was fixed to include local topics.

    • The estimation speed with tw=ONE was improved.

  • 0.3.0 (2019-10-06)
    • A new model, tomotopy.LLDAModel was added into the package.

    • A crashing issue of HDPModel was fixed.

    • Since hyperparameter estimation for HDPModel was implemented, the result of HDPModel may differ from previous versions.

      If you want to turn off hyperparameter estimation of HDPModel, set optim_interval to zero.

  • 0.2.0 (2019-08-18)
    • New models including tomotopy.CTModel and tomotopy.SLDAModel were added into the package.

    • A new parameter option rm_top was added for all topic models.

    • The problems in save and load method for PAModel and HPAModel were fixed.

    • An occassional crash in loading HDPModel was fixed.

    • The problem that ll_per_word was calculated incorrectly when min_cf > 0 was fixed.

  • 0.1.6 (2019-08-09)
    • Compiling errors at clang with macOS environment were fixed.

  • 0.1.4 (2019-08-05)
    • The issue when add_doc receives an empty list as input was fixed.

    • The issue that tomotopy.PAModel.get_topic_words doesn’t extract the word distribution of subtopic was fixed.

  • 0.1.3 (2019-05-19)
    • The parameter min_cf and its stopword-removing function were added for all topic models.

  • 0.1.0 (2019-05-12)
    • First version of tomotopy

Project details


Download files

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

Source Distribution

tomotopy-0.10.2.tar.gz (1.1 MB view details)

Uploaded Source

Built Distributions

tomotopy-0.10.2-cp39-cp39-win_amd64.whl (5.0 MB view details)

Uploaded CPython 3.9Windows x86-64

tomotopy-0.10.2-cp39-cp39-win32.whl (3.0 MB view details)

Uploaded CPython 3.9Windows x86

tomotopy-0.10.2-cp39-cp39-manylinux2010_x86_64.whl (15.1 MB view details)

Uploaded CPython 3.9manylinux: glibc 2.12+ x86-64

tomotopy-0.10.2-cp39-cp39-macosx_10_14_x86_64.whl (13.0 MB view details)

Uploaded CPython 3.9macOS 10.14+ x86-64

tomotopy-0.10.2-cp38-cp38-win_amd64.whl (5.0 MB view details)

Uploaded CPython 3.8Windows x86-64

tomotopy-0.10.2-cp38-cp38-win32.whl (3.0 MB view details)

Uploaded CPython 3.8Windows x86

tomotopy-0.10.2-cp38-cp38-manylinux2010_x86_64.whl (15.1 MB view details)

Uploaded CPython 3.8manylinux: glibc 2.12+ x86-64

tomotopy-0.10.2-cp38-cp38-macosx_10_14_x86_64.whl (13.1 MB view details)

Uploaded CPython 3.8macOS 10.14+ x86-64

tomotopy-0.10.2-cp37-cp37m-win_amd64.whl (5.0 MB view details)

Uploaded CPython 3.7mWindows x86-64

tomotopy-0.10.2-cp37-cp37m-win32.whl (3.0 MB view details)

Uploaded CPython 3.7mWindows x86

tomotopy-0.10.2-cp37-cp37m-manylinux2010_x86_64.whl (15.1 MB view details)

Uploaded CPython 3.7mmanylinux: glibc 2.12+ x86-64

tomotopy-0.10.2-cp37-cp37m-macosx_10_14_x86_64.whl (13.0 MB view details)

Uploaded CPython 3.7mmacOS 10.14+ x86-64

tomotopy-0.10.2-cp36-cp36m-win_amd64.whl (5.0 MB view details)

Uploaded CPython 3.6mWindows x86-64

tomotopy-0.10.2-cp36-cp36m-win32.whl (3.0 MB view details)

Uploaded CPython 3.6mWindows x86

tomotopy-0.10.2-cp36-cp36m-manylinux2010_x86_64.whl (15.1 MB view details)

Uploaded CPython 3.6mmanylinux: glibc 2.12+ x86-64

tomotopy-0.10.2-cp36-cp36m-macosx_10_14_x86_64.whl (13.0 MB view details)

Uploaded CPython 3.6mmacOS 10.14+ x86-64

tomotopy-0.10.2-cp35-cp35m-win_amd64.whl (5.0 MB view details)

Uploaded CPython 3.5mWindows x86-64

tomotopy-0.10.2-cp35-cp35m-win32.whl (3.0 MB view details)

Uploaded CPython 3.5mWindows x86

tomotopy-0.10.2-cp35-cp35m-manylinux2010_x86_64.whl (15.1 MB view details)

Uploaded CPython 3.5mmanylinux: glibc 2.12+ x86-64

tomotopy-0.10.2-cp35-cp35m-macosx_10_14_x86_64.whl (13.0 MB view details)

Uploaded CPython 3.5mmacOS 10.14+ x86-64

File details

Details for the file tomotopy-0.10.2.tar.gz.

File metadata

  • Download URL: tomotopy-0.10.2.tar.gz
  • Upload date:
  • Size: 1.1 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.3.0 pkginfo/1.7.0 requests/2.25.1 setuptools/53.0.0 requests-toolbelt/0.9.1 tqdm/4.56.2 CPython/3.8.7

File hashes

Hashes for tomotopy-0.10.2.tar.gz
Algorithm Hash digest
SHA256 51a03a8209e5218348efa6b31a2e90e18c2ba3243b62fd83d0bb8cc5d5dc85e7
MD5 85ab87f9b07243e6a01bb77da6126c95
BLAKE2b-256 ca3881033f5f55f0fe118399f841b693a1f617d3096dfb177a36cb2004d08daa

See more details on using hashes here.

File details

Details for the file tomotopy-0.10.2-cp39-cp39-win_amd64.whl.

File metadata

  • Download URL: tomotopy-0.10.2-cp39-cp39-win_amd64.whl
  • Upload date:
  • Size: 5.0 MB
  • Tags: CPython 3.9, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.3.0 pkginfo/1.7.0 requests/2.25.1 setuptools/53.0.0 requests-toolbelt/0.9.1 tqdm/4.56.2 CPython/3.9.1

File hashes

Hashes for tomotopy-0.10.2-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 43c2d0d2e286676bc2c0d66d724a9da49b45d9d137c7ae54de1b5c85b053533e
MD5 f84e468bf6472f9981750e87d004eded
BLAKE2b-256 ed1edf06c517be228985a7ece12e9880d5f8288ba3b5a5dd8c22829f5eaab49d

See more details on using hashes here.

File details

Details for the file tomotopy-0.10.2-cp39-cp39-win32.whl.

File metadata

  • Download URL: tomotopy-0.10.2-cp39-cp39-win32.whl
  • Upload date:
  • Size: 3.0 MB
  • Tags: CPython 3.9, Windows x86
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.3.0 pkginfo/1.7.0 requests/2.25.1 setuptools/53.0.0 requests-toolbelt/0.9.1 tqdm/4.56.2 CPython/3.9.1

File hashes

Hashes for tomotopy-0.10.2-cp39-cp39-win32.whl
Algorithm Hash digest
SHA256 037514f023a130d77991983e6c0477a88292006dfd1f855bc1173517d39581a7
MD5 b03de652ceb4791c65f3d2bd0e475c88
BLAKE2b-256 d445e3f75d2c5b1117658c3872608d4b952a586a23e13b70692b5fcb9c038e37

See more details on using hashes here.

File details

Details for the file tomotopy-0.10.2-cp39-cp39-manylinux2010_x86_64.whl.

File metadata

  • Download URL: tomotopy-0.10.2-cp39-cp39-manylinux2010_x86_64.whl
  • Upload date:
  • Size: 15.1 MB
  • Tags: CPython 3.9, manylinux: glibc 2.12+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.3.0 pkginfo/1.7.0 requests/2.25.1 setuptools/53.0.0 requests-toolbelt/0.9.1 tqdm/4.56.2 CPython/3.8.7

File hashes

Hashes for tomotopy-0.10.2-cp39-cp39-manylinux2010_x86_64.whl
Algorithm Hash digest
SHA256 a3186ad953eee5c1346061cd7933f627db889994a5189bc3fa60bdbe1fccc3f1
MD5 a6e3291bd57e1e189e7e1389e314c529
BLAKE2b-256 6c93c1c73b50ebcd1309537bb261b735a1697b66dbc234d7434760164afa6c4c

See more details on using hashes here.

File details

Details for the file tomotopy-0.10.2-cp39-cp39-macosx_10_14_x86_64.whl.

File metadata

  • Download URL: tomotopy-0.10.2-cp39-cp39-macosx_10_14_x86_64.whl
  • Upload date:
  • Size: 13.0 MB
  • Tags: CPython 3.9, macOS 10.14+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.3.0 pkginfo/1.7.0 requests/2.25.1 setuptools/49.2.1 requests-toolbelt/0.9.1 tqdm/4.56.2 CPython/3.9.1

File hashes

Hashes for tomotopy-0.10.2-cp39-cp39-macosx_10_14_x86_64.whl
Algorithm Hash digest
SHA256 3876f0d4c1351ce96a7c974b273246c495ec8d18abb6256c137680012349034c
MD5 a05972d217b6c111d657e4d6b3800c25
BLAKE2b-256 45ceb189ae1c1a2497ac9efc39a38d0578bdac419c2c838ba76eb2449eb34e42

See more details on using hashes here.

File details

Details for the file tomotopy-0.10.2-cp38-cp38-win_amd64.whl.

File metadata

  • Download URL: tomotopy-0.10.2-cp38-cp38-win_amd64.whl
  • Upload date:
  • Size: 5.0 MB
  • Tags: CPython 3.8, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.3.0 pkginfo/1.7.0 requests/2.25.1 setuptools/53.0.0 requests-toolbelt/0.9.1 tqdm/4.56.2 CPython/3.8.7

File hashes

Hashes for tomotopy-0.10.2-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 a41009ca7278bbb543bef3469a4c3fe98b7b6ed58d5a402b9023dec6c639ca45
MD5 6ab46586eb74b57a35b8d26e15940e12
BLAKE2b-256 d103e4693e3377bb053f2d1143a09ae3231ba41459f162e6822d7ecf59c6d5e7

See more details on using hashes here.

File details

Details for the file tomotopy-0.10.2-cp38-cp38-win32.whl.

File metadata

  • Download URL: tomotopy-0.10.2-cp38-cp38-win32.whl
  • Upload date:
  • Size: 3.0 MB
  • Tags: CPython 3.8, Windows x86
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.3.0 pkginfo/1.7.0 requests/2.25.1 setuptools/53.0.0 requests-toolbelt/0.9.1 tqdm/4.56.2 CPython/3.8.7

File hashes

Hashes for tomotopy-0.10.2-cp38-cp38-win32.whl
Algorithm Hash digest
SHA256 72d74b0545726f6d1287ce33ce99b519c2a1521b1d821645cf10b92237c9accb
MD5 316e5a6b048020a2ec777a96ac9a4f53
BLAKE2b-256 59e41893ad07ce8b32c8161317ac8ccb0ed54ba03ffb4d14235b8eb9e62bf6af

See more details on using hashes here.

File details

Details for the file tomotopy-0.10.2-cp38-cp38-manylinux2010_x86_64.whl.

File metadata

  • Download URL: tomotopy-0.10.2-cp38-cp38-manylinux2010_x86_64.whl
  • Upload date:
  • Size: 15.1 MB
  • Tags: CPython 3.8, manylinux: glibc 2.12+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.3.0 pkginfo/1.7.0 requests/2.25.1 setuptools/53.0.0 requests-toolbelt/0.9.1 tqdm/4.56.2 CPython/3.8.7

File hashes

Hashes for tomotopy-0.10.2-cp38-cp38-manylinux2010_x86_64.whl
Algorithm Hash digest
SHA256 7745597335c7cfd4676fa067a2a40ac49e2028e1a912a413089f305101292de6
MD5 1f891f77a587228b6d94409fb005b71e
BLAKE2b-256 df89a9a13fcedcaa40096df3c7983ec857ed5adc45e404920e7b511e136c5c97

See more details on using hashes here.

File details

Details for the file tomotopy-0.10.2-cp38-cp38-macosx_10_14_x86_64.whl.

File metadata

  • Download URL: tomotopy-0.10.2-cp38-cp38-macosx_10_14_x86_64.whl
  • Upload date:
  • Size: 13.1 MB
  • Tags: CPython 3.8, macOS 10.14+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.3.0 pkginfo/1.7.0 requests/2.25.1 setuptools/49.2.1 requests-toolbelt/0.9.1 tqdm/4.56.2 CPython/3.8.7

File hashes

Hashes for tomotopy-0.10.2-cp38-cp38-macosx_10_14_x86_64.whl
Algorithm Hash digest
SHA256 55a9610f60c53941a260cf59102823b6130e5bf6096d8b5057f7b2fbfcba962d
MD5 e6c501d3bf625bec46fa31e0f5385bf3
BLAKE2b-256 8a7e16ca7617e9562c6f2c38e5c01e5b6b15a80e56ed0a7f4673a30c4b4cd11d

See more details on using hashes here.

File details

Details for the file tomotopy-0.10.2-cp37-cp37m-win_amd64.whl.

File metadata

  • Download URL: tomotopy-0.10.2-cp37-cp37m-win_amd64.whl
  • Upload date:
  • Size: 5.0 MB
  • Tags: CPython 3.7m, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.3.0 pkginfo/1.7.0 requests/2.25.1 setuptools/53.0.0 requests-toolbelt/0.9.1 tqdm/4.56.2 CPython/3.7.9

File hashes

Hashes for tomotopy-0.10.2-cp37-cp37m-win_amd64.whl
Algorithm Hash digest
SHA256 566a2888497043f40699a88e7cb1bd81bb8146e9b1772fdad3aedc77ed71fbeb
MD5 ff096e55dde0eec8d262772d0f383cb2
BLAKE2b-256 f83e20893177f23b610c99045afe2a31df4b358e613d7961f62e4665f4ebd100

See more details on using hashes here.

File details

Details for the file tomotopy-0.10.2-cp37-cp37m-win32.whl.

File metadata

  • Download URL: tomotopy-0.10.2-cp37-cp37m-win32.whl
  • Upload date:
  • Size: 3.0 MB
  • Tags: CPython 3.7m, Windows x86
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.3.0 pkginfo/1.7.0 requests/2.25.1 setuptools/53.0.0 requests-toolbelt/0.9.1 tqdm/4.56.2 CPython/3.7.9

File hashes

Hashes for tomotopy-0.10.2-cp37-cp37m-win32.whl
Algorithm Hash digest
SHA256 65914aa29cbf5ff19cecad7eb55419d6b36e257bb1be641a8c69054ddadb7e46
MD5 5041509c2a9f4b8cdb310ff85367a9e5
BLAKE2b-256 b3a42022a326df20e63211f9b9fc1116ca28d16c11f83af6bdd3dba2bea94868

See more details on using hashes here.

File details

Details for the file tomotopy-0.10.2-cp37-cp37m-manylinux2010_x86_64.whl.

File metadata

  • Download URL: tomotopy-0.10.2-cp37-cp37m-manylinux2010_x86_64.whl
  • Upload date:
  • Size: 15.1 MB
  • Tags: CPython 3.7m, manylinux: glibc 2.12+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.3.0 pkginfo/1.7.0 requests/2.25.1 setuptools/53.0.0 requests-toolbelt/0.9.1 tqdm/4.56.2 CPython/3.8.7

File hashes

Hashes for tomotopy-0.10.2-cp37-cp37m-manylinux2010_x86_64.whl
Algorithm Hash digest
SHA256 a6dcca97e1028e1748decac50655f31ef6ad7c837138acda425443e7ee592316
MD5 c1d79f483ee1e0bc3e1934328f915509
BLAKE2b-256 e0ff33ddd2072ef849dbfc055d90bc7f288b3962434658cd39094b044ddaafd0

See more details on using hashes here.

File details

Details for the file tomotopy-0.10.2-cp37-cp37m-macosx_10_14_x86_64.whl.

File metadata

  • Download URL: tomotopy-0.10.2-cp37-cp37m-macosx_10_14_x86_64.whl
  • Upload date:
  • Size: 13.0 MB
  • Tags: CPython 3.7m, macOS 10.14+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.3.0 pkginfo/1.7.0 requests/2.25.1 setuptools/47.1.0 requests-toolbelt/0.9.1 tqdm/4.56.2 CPython/3.7.9

File hashes

Hashes for tomotopy-0.10.2-cp37-cp37m-macosx_10_14_x86_64.whl
Algorithm Hash digest
SHA256 de5a677bd27c26952324c3b745597057102ab44d537e4390ea6ded540939efc1
MD5 7520b8094d75d6fb6527a61e2a446f3d
BLAKE2b-256 1507974af2e06e6ea9bf144fe46a81a7f7cd76252a5c5192a59c134b099fdac3

See more details on using hashes here.

File details

Details for the file tomotopy-0.10.2-cp36-cp36m-win_amd64.whl.

File metadata

  • Download URL: tomotopy-0.10.2-cp36-cp36m-win_amd64.whl
  • Upload date:
  • Size: 5.0 MB
  • Tags: CPython 3.6m, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.3.0 pkginfo/1.7.0 requests/2.25.1 setuptools/53.0.0 requests-toolbelt/0.9.1 tqdm/4.56.2 CPython/3.6.8

File hashes

Hashes for tomotopy-0.10.2-cp36-cp36m-win_amd64.whl
Algorithm Hash digest
SHA256 49c9b6313a803a274eaf3c0d70e21aa2a9aa268d006f01d8e87907aa7e7ea209
MD5 600d31bacc211966af93799fd950f8ec
BLAKE2b-256 f24eaf26b80fd8d0b3abc0b367cdbbbda5a28825b0615a859e81e20544babd7c

See more details on using hashes here.

File details

Details for the file tomotopy-0.10.2-cp36-cp36m-win32.whl.

File metadata

  • Download URL: tomotopy-0.10.2-cp36-cp36m-win32.whl
  • Upload date:
  • Size: 3.0 MB
  • Tags: CPython 3.6m, Windows x86
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.3.0 pkginfo/1.7.0 requests/2.25.1 setuptools/53.0.0 requests-toolbelt/0.9.1 tqdm/4.56.2 CPython/3.6.8

File hashes

Hashes for tomotopy-0.10.2-cp36-cp36m-win32.whl
Algorithm Hash digest
SHA256 455e26bce67e4dc11b0f3663ab2374dffe1b465c0f200cb3fe0820f138c1ab1c
MD5 c067560b4776bfe55b02ffcfb3ab678e
BLAKE2b-256 88bb4629e526a3371697a38b0d3d4d30121ca160a5e7e4daaee4a29f41eb6a30

See more details on using hashes here.

File details

Details for the file tomotopy-0.10.2-cp36-cp36m-manylinux2010_x86_64.whl.

File metadata

  • Download URL: tomotopy-0.10.2-cp36-cp36m-manylinux2010_x86_64.whl
  • Upload date:
  • Size: 15.1 MB
  • Tags: CPython 3.6m, manylinux: glibc 2.12+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.3.0 pkginfo/1.7.0 requests/2.25.1 setuptools/53.0.0 requests-toolbelt/0.9.1 tqdm/4.56.2 CPython/3.8.7

File hashes

Hashes for tomotopy-0.10.2-cp36-cp36m-manylinux2010_x86_64.whl
Algorithm Hash digest
SHA256 1bc302aad03bbb7b166d3e8c434d703fe9d0cb6336072d2b04641698140f908f
MD5 69aa193ea012336d03ec19eb47976e72
BLAKE2b-256 7328fa1a848d2411481a19937cbb1a68264492ec01e901b59dd4be103b215aa9

See more details on using hashes here.

File details

Details for the file tomotopy-0.10.2-cp36-cp36m-macosx_10_14_x86_64.whl.

File metadata

  • Download URL: tomotopy-0.10.2-cp36-cp36m-macosx_10_14_x86_64.whl
  • Upload date:
  • Size: 13.0 MB
  • Tags: CPython 3.6m, macOS 10.14+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.3.0 pkginfo/1.7.0 requests/2.25.1 setuptools/40.6.2 requests-toolbelt/0.9.1 tqdm/4.56.2 CPython/3.6.12

File hashes

Hashes for tomotopy-0.10.2-cp36-cp36m-macosx_10_14_x86_64.whl
Algorithm Hash digest
SHA256 b0da69d488d7efbdde5ead48b7bd04d5623fd5542c06284a6cf7556cb7ee78d6
MD5 a9f94fed36d7b9cef58695148ecb5dc6
BLAKE2b-256 3eb7518e78e0fcdac1705a4c6d7147b67700bcff19830aa2e6cabaec6b031427

See more details on using hashes here.

File details

Details for the file tomotopy-0.10.2-cp35-cp35m-win_amd64.whl.

File metadata

  • Download URL: tomotopy-0.10.2-cp35-cp35m-win_amd64.whl
  • Upload date:
  • Size: 5.0 MB
  • Tags: CPython 3.5m, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.15.0 pkginfo/1.7.0 requests/2.25.1 setuptools/50.3.2 requests-toolbelt/0.9.1 tqdm/4.56.2 CPython/3.5.4

File hashes

Hashes for tomotopy-0.10.2-cp35-cp35m-win_amd64.whl
Algorithm Hash digest
SHA256 05528dc85406c648349c4e5d1e4370cd8eee8b7f7e97c9921bf4d8ee525ea4bb
MD5 df4b2b5ad825a782fc086e6af7f37579
BLAKE2b-256 6490cf355134072f9008b42834b13e834396b77324dd03e1b497d03c4a1fb029

See more details on using hashes here.

File details

Details for the file tomotopy-0.10.2-cp35-cp35m-win32.whl.

File metadata

  • Download URL: tomotopy-0.10.2-cp35-cp35m-win32.whl
  • Upload date:
  • Size: 3.0 MB
  • Tags: CPython 3.5m, Windows x86
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.15.0 pkginfo/1.7.0 requests/2.25.1 setuptools/50.3.2 requests-toolbelt/0.9.1 tqdm/4.56.2 CPython/3.5.4

File hashes

Hashes for tomotopy-0.10.2-cp35-cp35m-win32.whl
Algorithm Hash digest
SHA256 dedc24e021644f391f58827d42957d1a5f9f38326ea6e85c837f4f651131db0d
MD5 e429d117d9f744ffc43821632a56ab1b
BLAKE2b-256 b49da34f8572eea9d5f7e1e5f3ff4a54b7b4c3b68f9c12e96373de2ab1328eb2

See more details on using hashes here.

File details

Details for the file tomotopy-0.10.2-cp35-cp35m-manylinux2010_x86_64.whl.

File metadata

  • Download URL: tomotopy-0.10.2-cp35-cp35m-manylinux2010_x86_64.whl
  • Upload date:
  • Size: 15.1 MB
  • Tags: CPython 3.5m, manylinux: glibc 2.12+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.3.0 pkginfo/1.7.0 requests/2.25.1 setuptools/53.0.0 requests-toolbelt/0.9.1 tqdm/4.56.2 CPython/3.8.7

File hashes

Hashes for tomotopy-0.10.2-cp35-cp35m-manylinux2010_x86_64.whl
Algorithm Hash digest
SHA256 31c8c91956ab2683f5a21ddb12d59d35949929f7d33711901c66cf20f9e12109
MD5 f5d6553d00ff54ce236042abf757d429
BLAKE2b-256 50386bbc59a893c26e0bc2c41718cf58cb9c1a8a4e5015f26bf4c06b98d04711

See more details on using hashes here.

File details

Details for the file tomotopy-0.10.2-cp35-cp35m-macosx_10_14_x86_64.whl.

File metadata

  • Download URL: tomotopy-0.10.2-cp35-cp35m-macosx_10_14_x86_64.whl
  • Upload date:
  • Size: 13.0 MB
  • Tags: CPython 3.5m, macOS 10.14+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.15.0 pkginfo/1.7.0 requests/2.25.1 setuptools/28.8.0 requests-toolbelt/0.9.1 tqdm/4.56.2 CPython/3.5.10

File hashes

Hashes for tomotopy-0.10.2-cp35-cp35m-macosx_10_14_x86_64.whl
Algorithm Hash digest
SHA256 fc62b2841af74cea7c895b7d06575eace2a375cf24022ade97adf60fb09bacb2
MD5 4e240b047be467cfa641b0d7d0089c9c
BLAKE2b-256 e0fc5b79d85e812c4079c4f26cc823ca907bed4761c30809eed972b40a519b11

See more details on using hashes here.

Supported by

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