From 61596cdcd33ad230724929270311978aba185d67 Mon Sep 17 00:00:00 2001 From: Kjamm Date: Sun, 11 Aug 2024 00:41:57 +0900 Subject: [PATCH] update --- ...microbiome_analysis-0.1.2-py3-none-any.whl | Bin 12957 -> 13029 bytes dist/microbiome_analysis-0.1.2.tar.gz | Bin 10068 -> 10266 bytes microbiome_analysis.egg-info/PKG-INFO | 223 ------------------ microbiome_analysis.egg-info/SOURCES.txt | 27 --- .../dependency_links.txt | 1 - microbiome_analysis.egg-info/requires.txt | 12 - microbiome_analysis.egg-info/top_level.txt | 2 - setup.py | 8 +- 8 files changed, 7 insertions(+), 266 deletions(-) delete mode 100644 microbiome_analysis.egg-info/PKG-INFO delete mode 100644 microbiome_analysis.egg-info/SOURCES.txt delete mode 100644 microbiome_analysis.egg-info/dependency_links.txt delete mode 100644 microbiome_analysis.egg-info/requires.txt delete mode 100644 microbiome_analysis.egg-info/top_level.txt diff --git a/dist/microbiome_analysis-0.1.2-py3-none-any.whl b/dist/microbiome_analysis-0.1.2-py3-none-any.whl index 7729ff22e184134326f8a4f910ef2e74fd2ce31c..53b935cc04bcc17cd7d275c2063cb3aa97104113 100644 GIT binary patch delta 3642 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 MG7tuRD*ylh0Pt$n!TK2f{J#lV(bTl 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 Qi2>v)cHt2)iLfyL14Z`BoB#j- literal 10068 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 diff --git a/microbiome_analysis.egg-info/PKG-INFO b/microbiome_analysis.egg-info/PKG-INFO deleted file mode 100644 index 0eee94b..0000000 --- a/microbiome_analysis.egg-info/PKG-INFO +++ /dev/null @@ -1,223 +0,0 @@ -Metadata-Version: 2.1 -Name: microbiome-analysis -Version: 0.1.2 -Summary: A comprehensive Python library for microbiome data analysis -Author: Jaemin Kim -Author-email: jaemin52577441@gmail.com -Classifier: Programming Language :: Python :: 3 -Classifier: License :: OSI Approved :: MIT License -Classifier: Operating System :: OS Independent -Requires-Python: >=3.6 -Description-Content-Type: text/markdown -License-File: LICENSE -Requires-Dist: biopython -Requires-Dist: numpy -Requires-Dist: scipy -Requires-Dist: pandas -Requires-Dist: matplotlib -Requires-Dist: seaborn -Requires-Dist: scikit-learn -Requires-Dist: plotly -Requires-Dist: streamlit -Requires-Dist: networkx -Requires-Dist: statsmodels -Requires-Dist: kaleido - -# Microbiome Analysis -[ENGLISH](https://github.com/Kjamm/microbiome_analysis) [한국어](https://github.com/Kjamm/microbiome_analysis/blob/main/README_KOR.md) - -This library was created out of the personal curiosity of Jaemin Kim of Chungnam National University. - -A comprehensive Python library for microbiome data analysis, providing functionalities for data processing, quality control, normalization, diversity analysis, visualization, network analysis, and statistical comparisons. - -## Features - -- **Data Input & Transformation**: Support for various file formats (CSV, Excel, FASTQ, FASTA) and integration of metadata with sequence data. -- **Quality Control**: Sequence quality assessment, filtering, and consistency checks across samples. -- **Normalization & Filtering**: Sample size normalization, rare sequence removal, and background noise filtering. -- **Diversity Analysis**: Calculation of various alpha and beta diversity indices. -- **Taxonomic Classification**: Sequence classification using pre-trained classifiers. -- **Visualization**: Plotting diversity indices, PCA/PCoA/NMDS results, and network visualizations. -- **Network Analysis**: Co-occurrence network creation and centrality analysis. -- **Statistical Analysis**: ANOVA, PERMANOVA, differential abundance analysis, and correlation analysis. -- **Interactive Dashboard**: Streamlit-based dashboard for data visualization and exploration. - -## Installation - -To install the library, use the following command: - -```bash -pip install microbiome_analysis -``` - -## Usage -Below are examples of how to use various features of the library. - -## Data Input & Transformation - -```python -from microbiome_analysis import preprocessing - -# Read sequences from a FASTQ file -sequences = preprocessing.read_fastq("example.fastq") - -# Read metadata from a CSV file -metadata_df = preprocessing.read_csv("metadata.csv") - -# Merge metadata with sequence data -merged_data = preprocessing.merge_metadata_sequence(metadata_df, sequences) -``` - -## Quality Control -```python -from microbiome_analysis import qc - -# Perform quality control on sequences -qualities = qc.quality_control(sequences) - -# Plot quality score distribution -qc.plot_quality_distribution(sequences) - -# Check consistency across samples -samples = [sequences, sequences] # Example list of sample sequences -consistency = qc.check_consistency(samples) -print(f"Consistency across samples: {consistency}") -``` - -## Normalization & Filtering -```python -from microbiome_analysis import normalization - -# Normalize sample sizes -normalized_data = normalization.normalize_sample_size(data) - -# Remove rare sequences -filtered_data = normalization.remove_rare_sequences(data, threshold=10) - -# Filter background noise -cleaned_data = normalization.filter_background_noise(data, noise_threshold=0.01) -``` - -## Diversity Analysis -```python -from microbiome_analysis import diversity - -# Calculate alpha diversity indices -alpha_diversity = diversity.calculate_alpha_diversity(data) -print(alpha_diversity) -``` - -## Beta Diversity Analysis -```python -from microbiome_analysis import beta_diversity - -# Perform PCA analysis -pca_coords = beta_diversity.pca_analysis(data) - -# Perform PCoA analysis -pcoa_coords = beta_diversity.pcoa_analysis(data) - -# Perform NMDS analysis -nmds_coords = beta_diversity.nmds_analysis(data) -``` - -## Taxonomic Classification -```python -from microbiome_analysis import classification - -# Train the classifier -sequences = [ - 'ATCGGCTAAG', - 'GCTTAGCTAG', - 'TTCGCTGATC', - 'GCTAGCTAGT' -] -labels = [ - 'species_1', - 'species_2', - 'species_1', - 'species_2' -] -trained_classifier = classification.train_classifier(sequences, labels) - -# Classify new samples -new_samples = [ - 'ATCGGCTAAG', - 'GCTAGCTAGT' -] -predicted_labels = classification.classify_new_samples(new_samples, trained_classifier) -print(predicted_labels) -``` - -## Visualization -```python -from microbiome_analysis import visualization - -# Plot alpha diversity indices -visualization.plot_alpha_diversity(alpha_diversity) - -# Plot PCA results -visualization.plot_pca(pca_coords, labels) - -# Plot beta diversity results -visualization.plot_beta_diversity(pcoa_coords, method='PCoA') -``` - -## Network Analysis -```python -from microbiome_analysis import network - -# Create co-occurrence network -cooccurrence_network = network.create_cooccurrence_network(data) - -# Plot network -network.plot_network(cooccurrence_network) - -# Analyze network centrality -centrality = network.analyze_network_centrality(cooccurrence_network) -print(centrality) -``` - -## Statistical Analysis -```python -from microbiome_analysis import statistics - -# Perform ANOVA analysis -anova_result = statistics.anova_analysis(groups) -print(anova_result) - -# Perform PERMANOVA analysis -permanova_result = statistics.perm_anova(data, groups) -print(permanova_result) - -# Perform correlation analysis -correlation_result = statistics.correlation_analysis(data1, data2, method='spearman') -print(correlation_result) -``` - -## Interactive Dashboard -```python -from microbiome_analysis import dashboard - -# Create an interactive dashboard -data = pd.DataFrame({ - 'feature1': [10, 20, 30], - 'feature2': [20, 30, 40] -}) -diversity_df = pd.DataFrame({ - 'shannon': [1.0, 2.0, 3.0], - 'simpson': [0.5, 0.3, 0.2] -}) -pca_coords = pd.DataFrame({ - 'PC1': [1.0, 2.0, 3.0], - 'PC2': [0.5, 0.3, 0.2] -}) -labels = ['label1', 'label2', 'label3'] -dashboard.create_dashboard(data, diversity_df, pca_coords, labels) -``` - -## Contributing -Contributions are welcome! Please feel free to submit a Pull Request or open an Issue for any bugs or feature requests. - -## License -This project is licensed under the MIT License. diff --git a/microbiome_analysis.egg-info/SOURCES.txt b/microbiome_analysis.egg-info/SOURCES.txt deleted file mode 100644 index 85735ae..0000000 --- a/microbiome_analysis.egg-info/SOURCES.txt +++ /dev/null @@ -1,27 +0,0 @@ -LICENSE -README.md -setup.py -microbiome_analysis/__init__.py -microbiome_analysis/beta_diversity.py -microbiome_analysis/classification.py -microbiome_analysis/dashboard.py -microbiome_analysis/diversity.py -microbiome_analysis/network.py -microbiome_analysis/normalization.py -microbiome_analysis/preprocessing.py -microbiome_analysis/qc.py -microbiome_analysis/statistics.py -microbiome_analysis/visualization.py -microbiome_analysis.egg-info/PKG-INFO -microbiome_analysis.egg-info/SOURCES.txt -microbiome_analysis.egg-info/dependency_links.txt -microbiome_analysis.egg-info/requires.txt -microbiome_analysis.egg-info/top_level.txt -test/__init__.py -test/test_classification.py -test/test_diversity.py -test/test_network.py -test/test_normalization.py -test/test_preprocessing.py -test/test_statistics.py -test/test_visualization.py \ No newline at end of file diff --git a/microbiome_analysis.egg-info/dependency_links.txt b/microbiome_analysis.egg-info/dependency_links.txt deleted file mode 100644 index 8b13789..0000000 --- a/microbiome_analysis.egg-info/dependency_links.txt +++ /dev/null @@ -1 +0,0 @@ - diff --git a/microbiome_analysis.egg-info/requires.txt b/microbiome_analysis.egg-info/requires.txt deleted file mode 100644 index 655aa37..0000000 --- a/microbiome_analysis.egg-info/requires.txt +++ /dev/null @@ -1,12 +0,0 @@ -biopython -numpy -scipy -pandas -matplotlib -seaborn -scikit-learn -plotly -streamlit -networkx -statsmodels -kaleido diff --git a/microbiome_analysis.egg-info/top_level.txt b/microbiome_analysis.egg-info/top_level.txt deleted file mode 100644 index 7c0e8cf..0000000 --- a/microbiome_analysis.egg-info/top_level.txt +++ /dev/null @@ -1,2 +0,0 @@ -microbiome_analysis -test diff --git a/setup.py b/setup.py index a6a911d..acd6d38 100644 --- a/setup.py +++ b/setup.py @@ -5,12 +5,18 @@ setup( name="microbiome_analysis", - version="0.1.2", + version="0.1.3", description="A comprehensive Python library for microbiome data analysis", long_description=long_description, long_description_content_type="text/markdown", author="Jaemin Kim", author_email="jaemin52577441@gmail.com", + url="https://kjamm.github.io/microbiome_analysis/", # GitHub Pages URL + project_urls={ + "Documentation": "https://kjamm.github.io/microbiome_analysis/", # GitHub Pages URL + "Source Code": "https://github.com/kjamm/microbiome_analysis", + "Issue Tracker": "https://github.com/kjamm/microbiome_analysis/issues", + }, packages=find_packages(), install_requires=[ "biopython",