diff --git a/.github/workflows/nf-test.yml b/.github/workflows/nf-test.yml index 1668cf73..e799b3af 100644 --- a/.github/workflows/nf-test.yml +++ b/.github/workflows/nf-test.yml @@ -18,7 +18,7 @@ concurrency: env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - NFT_VER: "0.9.3" + NFT_VER: "0.9.5" NFT_WORKDIR: "~" NXF_ANSI_LOG: false NXF_SINGULARITY_CACHEDIR: ${{ github.workspace }}/.singularity @@ -30,6 +30,7 @@ jobs: runs-on: # use self-hosted runners - runs-on=${{ github.run_id }}-nf-test-changes - runner=4cpu-linux-x64 + - volume=40gb outputs: shard: ${{ steps.set-shards.outputs.shard }} total_shards: ${{ steps.set-shards.outputs.total_shards }} @@ -64,6 +65,7 @@ jobs: runs-on: # use self-hosted runners - runs-on=${{ github.run_id }}-nf-test - runner=4cpu-linux-x64 + - volume=40gb strategy: fail-fast: false matrix: diff --git a/.nf-core.yml b/.nf-core.yml index 9d83d644..27e1378f 100644 --- a/.nf-core.yml +++ b/.nf-core.yml @@ -15,7 +15,6 @@ lint: - tests/test_data/genorm/compute_m_measure/input/std.0.0.parquet - tests/test_data/genorm/compute_m_measure/input/std.1.2.parquet - tests/test_data/genorm/compute_m_measure/input/std.1.2.parquet - schema_lint: false nf_core_version: 3.5.2 repository_type: pipeline diff --git a/bin/aggregate_results.py b/bin/aggregate_results.py index fd536674..53067ed0 100755 --- a/bin/aggregate_results.py +++ b/bin/aggregate_results.py @@ -115,7 +115,7 @@ def concat_cast_to_string_and_drop_duplicates(files: list[Path]) -> pl.DataFrame def cast_count_columns_to_float(df: pl.DataFrame) -> pl.DataFrame: return df.select( pl.col(config.GENE_ID_COLNAME), - pl.exclude(config.GENE_ID_COLNAME).cast(pl.Float64), + pl.exclude(config.GENE_ID_COLNAME).cast(pl.Float32), ) diff --git a/bin/common.py b/bin/common.py index 59e1bb7e..1df0b20e 100644 --- a/bin/common.py +++ b/bin/common.py @@ -46,13 +46,17 @@ def parse_table(file: Path): raise ValueError(f"Unsupported file format: {file.suffix}") +def get_nb_rows(lf: pl.LazyFrame): + return lf.select(pl.len()).collect().item() + + def parse_count_table(file: Path): df = parse_table(file) first_col = df.columns[0] # whatever the name of the first col, rename it to "gene_id" return df.rename({first_col: config.GENE_ID_COLNAME}).select( pl.col(config.GENE_ID_COLNAME).cast(pl.String()), - pl.exclude(config.GENE_ID_COLNAME).cast(pl.Float64()), + pl.exclude(config.GENE_ID_COLNAME).cast(pl.Float32()), ) diff --git a/bin/compute_gene_statistics.py b/bin/compute_gene_statistics.py index ec250cf7..9a9b0c64 100755 --- a/bin/compute_gene_statistics.py +++ b/bin/compute_gene_statistics.py @@ -15,7 +15,7 @@ # outfile names ALL_GENES_RESULT_OUTFILE_SUFFIX = "stats_all_genes.csv" -RCV_MULTIFILER = 1.4826 # see https://pmc.ncbi.nlm.nih.gov/articles/PMC9196089/ +RCV_MULTIPLIER = 1.4826 # see https://pmc.ncbi.nlm.nih.gov/articles/PMC9196089/ # quantile intervals NB_QUANTILES = 100 @@ -95,9 +95,9 @@ def parse_args(): return parser.parse_args() -def get_counts(file: Path) -> pl.DataFrame: +def get_counts(file: Path) -> pl.LazyFrame: # sorting dataframe (necessary to get consistent output) - return pl.read_parquet(file).sort(config.GENE_ID_COLNAME, descending=False) + return pl.scan_parquet(file).sort(config.GENE_ID_COLNAME, descending=False) def get_colname(colname: str, platform: str | None) -> str: @@ -125,22 +125,41 @@ def get_valid_samples( def compute_ratios_null_values( - df: pl.DataFrame, valid_samples: list[str], platform: str | None -) -> pl.DataFrame: - # the samples showing a low gene count will not be taken into account for the zero count penalty - nb_nulls = df.select(pl.exclude(config.GENE_ID_COLNAME).is_null()).sum_horizontal() + lf: pl.LazyFrame, valid_samples: list[str], platform: str | None +) -> pl.LazyFrame: + samples_cols = [ + col for col in lf.collect_schema().names() if col != config.GENE_ID_COLNAME + ] + nb_samples = len(samples_cols) - 1 + found_valid_samples = [sample for sample in valid_samples if sample in samples_cols] - found_valid_samples = [sample for sample in valid_samples if sample in df.columns] + # the samples showing a low gene count will not be taken into account for the zero count penalty + nb_nulls = ( + lf.select( + pl.exclude(config.GENE_ID_COLNAME).is_null() + ) # select all columns except GENE_ID_COLNAME and check if they are null + .select( + pl.sum_horizontal(pl.all()).alias("nb_nulls_all_samples") + ) # sum the number of null values across all columns + .collect() + .to_series() + ) if found_valid_samples: - nb_nulls_valid_samples = df.select( - pl.col(found_valid_samples).is_null() - ).sum_horizontal() + nb_nulls_valid_samples = ( + lf.select( + pl.col(found_valid_samples).is_null() + ) # select all columns in valid_samples and check if they are null + .select( + pl.sum_horizontal(pl.all()).alias("nb_nulls_valid_samples") + ) # sum the number of null values across all columns + .collect() + .to_series() + ) else: nb_nulls_valid_samples = nb_nulls - nb_samples = len(df.columns) - 1 - return df.select( + return lf.select( pl.col(config.GENE_ID_COLNAME), (nb_nulls / nb_samples).alias( get_colname(config.RATIO_NULLS_COLNAME, platform) @@ -174,7 +193,7 @@ def get_main_statistics(lf: pl.LazyFrame, platform: str | None) -> pl.LazyFrame: (pl.col("std") / pl.col("mean")).alias( get_colname(config.COEFFICIENT_OF_VARIATION_COLNAME, platform) ), - (pl.col("mad") / pl.col("median") * RCV_MULTIFILER).alias( + (pl.col("mad") / pl.col("median") * RCV_MULTIPLIER).alias( get_colname(config.ROBUST_COEFFICIENT_OF_VARIATION_MEDIAN_COLNAME, platform) ), ) @@ -244,15 +263,12 @@ def main(): ) logger.info("Loading count data (before missing value imputation)") - non_imputed_count_df = get_counts(args.count_file) + non_imputed_count_lf = get_counts(args.count_file) - ratio_nulls_df = compute_ratios_null_values( - non_imputed_count_df, valid_samples, args.platform + ratio_nulls_lf = compute_ratios_null_values( + non_imputed_count_lf, valid_samples, args.platform ) - # deleting non_imputed_count_df in order to free unused memory - del non_imputed_count_df - # if the user provided an imputed count file, use it; otherwise, use the original count file if args.imputed_count_file: logger.info("Using imputed count file") @@ -262,20 +278,14 @@ def main(): count_file = args.count_file logger.info("Loading count data...") - count_df = get_counts(count_file) - logger.info( - f"Loaded count data with {count_df.shape[0]} rows and {count_df.shape[1]} columns" - ) + count_lf = get_counts(count_file) logger.info("Computing statistics and stability score") - count_lf = count_df.lazy() # getting expression statistics stat_lf = get_main_statistics(count_lf, args.platform) # adding column for nb of null values for each gene - stat_lf = stat_lf.join( - ratio_nulls_df.lazy(), on=config.GENE_ID_COLNAME, how="inner" - ) + stat_lf = stat_lf.join(ratio_nulls_lf, on=config.GENE_ID_COLNAME, how="inner") # adding a column for the frequency of zero values stat_lf = compute_ratio_zeros(count_lf, stat_lf, args.platform) diff --git a/bin/compute_m_measures.py b/bin/compute_m_measures.py index bc1d783e..a37d4d34 100755 --- a/bin/compute_m_measures.py +++ b/bin/compute_m_measures.py @@ -14,9 +14,6 @@ M_MEASURE_OUTFILE_NAME = "m_measures.csv" -DEFAULT_CHUNKSIZE = 300 -NB_GENE_ID_CHUNK_FOLDERS = 100 - ##################################################### ##################################################### @@ -27,13 +24,6 @@ def parse_args(): parser = argparse.ArgumentParser(description="Compute M-measure for each gene") - parser.add_argument( - "--counts", - type=Path, - dest="count_file", - required=True, - help="File containing std of lof expression ratios", - ) parser.add_argument( "--std-files", type=str, @@ -41,13 +31,6 @@ def parse_args(): required=True, help="File containing std of lof expression ratios", ) - parser.add_argument( - "--task-attempts", - dest="task_attempts", - type=int, - default=1, - help="Number of task attempts", - ) return parser.parse_args() @@ -55,8 +38,22 @@ def get_nb_rows(lf: pl.LazyFrame): return lf.select(pl.len()).collect().item() -def concat_all_std_data(files: list[Path], low_memory: bool) -> pl.LazyFrame: - lfs = [pl.scan_parquet(file, low_memory=low_memory) for file in files] +def concat_all_std_data(files: list[Path]) -> pl.LazyFrame: + """ + Concatenate all std data from the given files into a single LazyFrame. + Explode the ratios_stds column to get one row per gene_id and ratio_std, + then group by gene_id again to aggregate all ratio values per gene_id. + Each file in files is like: + ┌────────────────┬─────────────────────────────────┐ + │ gene_id ┆ ratios_stds │ + │ --- ┆ --- │ + │ str ┆ list[f32] │ + ╞════════════════╪═════════════════════════════════╡ + │ PRUPE_1G033600 ┆ [14.52564, 10.279425, … 10.209… │ + │ PRUPE_1G176100 ┆ [10.240738, 10.267249, … 14.51… │ + └────────────────┴─────────────────────────────────┘ + """ + lfs = [pl.scan_parquet(file) for file in files] lf = pl.concat(lfs) return ( lf.explode(config.RATIOS_STD_COLNAME) @@ -66,6 +63,10 @@ def concat_all_std_data(files: list[Path], low_memory: bool) -> pl.LazyFrame: def compute_m_measures(lf: pl.LazyFrame) -> pl.LazyFrame: + """ + Compute the m-measure for each gene. + The m-measure is the sum of the ratios standard deviations divided by the number of ratios minus 1. + """ return lf.select( pl.col(config.GENE_ID_COLNAME), ( @@ -91,128 +92,27 @@ def get_chunks(lst: list, chunksize: int): def main(): args = parse_args() - low_memory = True if args.task_attempts > 1 else False files = [Path(file) for file in args.std_files.split(" ")] - logger.info("Getting list of gene IDs") - count_lf = pl.scan_parquet(args.count_file, low_memory=low_memory) - - ############################################################################# - # MAKING A FOLDER FOR EACH CHUNK OF GENE IDS - ############################################################################# - gene_ids = count_lf.select(config.GENE_ID_COLNAME).collect().to_series().to_list() - gene_ids = sorted(gene_ids) - - chunksize = max( - 1, int(len(gene_ids) / NB_GENE_ID_CHUNK_FOLDERS) - ) # 1 if len(gene_ids) < NB_GENE_ID_CHUNK_FOLDERS - gene_id_list_chunks = list(get_chunks(gene_ids, chunksize=chunksize)) - - gene_id_chunk_folders = [] - for i in range(len(gene_id_list_chunks)): - gene_id_chunk_folder = Path(f"gene_ids_{i}") - gene_id_chunk_folder.mkdir(exist_ok=True) - gene_id_chunk_folders.append(gene_id_chunk_folder) - - ############################################################################# - # EXPORTING GENE DATA TO THEIR RESPECTIVE CHUNK FOLDER - ############################################################################# - # progressively decreasing the chunksize if OOM - chunksize = int(DEFAULT_CHUNKSIZE / args.task_attempts) - chunk_files_list = [ - files[i : i + chunksize] for i in range(0, len(files), chunksize) - ] - - logger.info("Parsing std data by chunks") - for i, chunk_files in enumerate(chunk_files_list): - # parsing files and making a first list concatenation - concat_lf = concat_all_std_data(chunk_files, low_memory) - - # looping through each group of gene IDs - for j, (gene_id_list_chunk, gene_id_chunk_folder) in enumerate( - zip(gene_id_list_chunks, gene_id_chunk_folders) - ): - # writing all data corresponding to this group of gene IDs in a specific folder - outfile = gene_id_chunk_folder / f"chunk.{i}.parquet" - concat_df = concat_lf.filter( - pl.col(config.GENE_ID_COLNAME).is_in(gene_id_list_chunk) - ).collect() - concat_df.write_parquet(outfile) - - ############################################################################# - # GATHERING ALL DATA CHUNK BY CHUNK AND COMPUTING M MEASURE FOR EACH GENE - ############################################################################# - computed_genes = 0 - nb_ratios_per_gene = set() - logger.info( - "Concatenating all std data by chunk of gene IDs and computing M measures" + # parsing files and making concatenation + concat_lf = concat_all_std_data(files) + + # sort everything + # this is very weird, but if we do not sort the ratios_std list, the M measure computation may be slightly inconsistent + # the ratios lists should be already sorted, but if they are not, we sort them here to ensure consistency + concat_lf = concat_lf.sort(config.GENE_ID_COLNAME).with_columns( + pl.col(config.RATIOS_STD_COLNAME).list.sort() + ) + + # computing M measures for these gene IDs + m_measure_lf = compute_m_measures(concat_lf) + + if m_measure_lf.select(config.GENE_ID_COLNAME).collect().is_duplicated().any(): + raise ValueError("Duplicate values found for gene IDs!") + + m_measure_lf.sink_csv( + M_MEASURE_OUTFILE_NAME, float_precision=config.CSV_FLOAT_PRECISION ) - with open(M_MEASURE_OUTFILE_NAME, "a") as fout: - for i, gene_id_chunk_folder in enumerate(gene_id_chunk_folders): - chunk_files = list(gene_id_chunk_folder.iterdir()) - - concat_lf = concat_all_std_data(chunk_files, low_memory).sort( - config.GENE_ID_COLNAME - ) - - # computing M measures for these gene IDs - m_measure_lf = compute_m_measures(concat_lf) - m_measure_df = m_measure_lf.collect() - - ################################################# - # checks - ################################################# - if m_measure_df[config.GENE_ID_COLNAME].is_duplicated().any(): - raise ValueError("Duplicate values found for gene IDs!") - - process_gene_ids = sorted( - m_measure_df.select(config.GENE_ID_COLNAME).to_series().to_list() - ) - if process_gene_ids != gene_id_list_chunks[i]: - raise ValueError("Incorrect gene IDs found!") - - computed_genes += len(m_measure_df) - - unique_nb_ratios = ( - concat_lf.with_columns( - pl.col(config.RATIOS_STD_COLNAME).list.len().alias("length") - ) - .select("length") - .unique() - .collect() - .to_series() - .to_list() - ) - nb_ratios_per_gene.update(unique_nb_ratios) - - ################################################# - ################################################# - - # appending to output file - if i == 0: - m_measure_df.write_csv( - fout, - include_header=True, - float_precision=config.CSV_FLOAT_PRECISION, - ) - else: - m_measure_df.write_csv( - fout, - include_header=False, - float_precision=config.CSV_FLOAT_PRECISION, - ) - - logger.info(f"Number of gene IDs: {len(gene_ids)}") - logger.info(f"Number of computed genes: {computed_genes}") - if computed_genes != len(gene_ids): - raise ValueError( - f"Number of computed genes: {computed_genes} != number of gene IDs: {len(gene_ids)}" - ) - - if len(nb_ratios_per_gene) > 1: - logger.warning( - f"Got multiple number of std ratios to compute: {list(nb_ratios_per_gene)}" - ) if __name__ == "__main__": diff --git a/bin/compute_stability_scores.py b/bin/compute_stability_scores.py index ad7fbba2..678d8d08 100755 --- a/bin/compute_stability_scores.py +++ b/bin/compute_stability_scores.py @@ -133,7 +133,7 @@ def compute_stability_score(self): pl.col(normalised_col).is_not_null() & pl.col(normalised_col).is_not_nan() ) - .then(pl.col(normalised_col)) + .then(pl.col(normalised_col) * weight) .otherwise(pl.lit(0)) ) diff --git a/bin/config.py b/bin/config.py index fe217991..93da629b 100644 --- a/bin/config.py +++ b/bin/config.py @@ -41,4 +41,4 @@ GENORM_M_MEASURE_COLNAME = "genorm_m_measure" RATIOS_STD_COLNAME = "ratios_stds" -CSV_FLOAT_PRECISION = 6 +CSV_FLOAT_PRECISION = 4 diff --git a/bin/detect_rare_genes.py b/bin/detect_rare_genes.py index 02cc2831..d279857d 100755 --- a/bin/detect_rare_genes.py +++ b/bin/detect_rare_genes.py @@ -121,6 +121,7 @@ def main(): .select(config.GENE_ID_COLNAME) .unique() .to_series() + .sort() .to_list() ) diff --git a/bin/get_candidate_genes.py b/bin/get_candidate_genes.py index c0f8c58b..b2efbd54 100755 --- a/bin/get_candidate_genes.py +++ b/bin/get_candidate_genes.py @@ -62,7 +62,7 @@ def parse_args(): def parse_stats(file: Path) -> pl.DataFrame: return pl.read_csv(file).select( pl.col(config.GENE_ID_COLNAME).cast(pl.String()), - pl.exclude(config.GENE_ID_COLNAME).cast(pl.Float64()), + pl.exclude(config.GENE_ID_COLNAME).cast(pl.Float32()), ) diff --git a/bin/get_eatlas_accessions.py b/bin/get_eatlas_accessions.py index 2b8b2dde..1389c0ac 100755 --- a/bin/get_eatlas_accessions.py +++ b/bin/get_eatlas_accessions.py @@ -20,6 +20,7 @@ ) logging.basicConfig(level=logging.INFO) +logging.getLogger("httpx").setLevel(logging.WARNING) logger = logging.getLogger(__name__) ALLOWED_PLATFORMS = ["rnaseq", "microarray"] @@ -103,7 +104,8 @@ def get_data(url: str) -> dict: RuntimeError If the query fails """ - response = httpx.get(url) + # timeout of 10 minutes since the EBI may take a while to respond + response = httpx.get(url, timeout=360.0) response.raise_for_status() return response.json() @@ -427,7 +429,7 @@ def main(): species_name = format_species_name(args.species) keywords = args.keywords - logger.info(f"Getting experiments corresponding to species {species_name}") + logger.info("Getting all Expression Atlas experiments") experiments = get_eatlas_experiments() logger.info("Filtering on species name") diff --git a/bin/get_ratio_standard_variation.py b/bin/get_ratio_standard_variation.py index 76d4ebfd..1b63ede7 100755 --- a/bin/get_ratio_standard_variation.py +++ b/bin/get_ratio_standard_variation.py @@ -7,6 +7,8 @@ from pathlib import Path import config +from common import get_nb_rows + import polars as pl logging.basicConfig(level=logging.INFO) @@ -32,20 +34,9 @@ def parse_args(): required=True, help="File log of pairwise expression ratios", ) - parser.add_argument( - "--task-attempts", - dest="task_attempts", - type=int, - default=1, - help="Number of task attempts", - ) return parser.parse_args() -def get_nb_rows(lf: pl.LazyFrame): - return lf.select(pl.len()).collect().item() - - def get_count_columns(lf: pl.LazyFrame) -> list[str]: """Get all column names except the config.GENE_ID_COLNAME column. @@ -58,8 +49,8 @@ def get_count_columns(lf: pl.LazyFrame) -> list[str]: ] -def compute_standard_deviations(file: Path, low_memory: bool) -> pl.LazyFrame: - ratios_lf = pl.scan_parquet(file, low_memory=low_memory) +def compute_standard_deviations(file: Path) -> pl.LazyFrame: + ratios_lf = pl.scan_parquet(file) ratio_columns = [ col for col in ratios_lf.collect_schema().names() if col.endswith("_log_ratio") ] @@ -125,21 +116,24 @@ def group_standard_deviations(std_lf: pl.LazyFrame) -> pl.LazyFrame: def main(): args = parse_args() - low_memory = True if args.task_attempts > 1 else False - std_lf = compute_standard_deviations(args.ratio_file, low_memory) + logger.info(f"Computing standard deviations for {str(args.ratio_file)}") + std_lf = compute_standard_deviations(args.ratio_file) std_lf = group_standard_deviations(std_lf) # when the ratio file corresponds to the same gene ids cross joined with themselves (i == i) # then we want only only one row per gene id - - std_df = std_lf.collect() - if len(std_df) == 0: + if get_nb_rows(std_lf) == 0: raise ValueError( f"No output following treatment of file {str(args.ratio_file)}" ) + # sort items in each list + std_lf = std_lf.with_columns(pl.col(config.RATIOS_STD_COLNAME).list.sort()) + outfile = args.ratio_file.name.replace("ratios", "std") - std_df.write_parquet(outfile) + std_lf.sink_parquet(outfile) + + logger.info(f"Wrote standard deviations to {outfile}") if __name__ == "__main__": diff --git a/bin/impute_missing_values.py b/bin/impute_missing_values.py index 962e9728..cfed2896 100755 --- a/bin/impute_missing_values.py +++ b/bin/impute_missing_values.py @@ -7,26 +7,31 @@ from pathlib import Path import config +import numpy as np import polars as pl from common import export_parquet, parse_count_table from sklearn.experimental import enable_iterative_imputer # noqa from sklearn.impute import IterativeImputer, KNNImputer, SimpleImputer +from sklearn.cluster import MiniBatchKMeans logging.basicConfig(level=logging.INFO) logger = logging.getLogger(__name__) OUTFILE_SUFFIX = ".imputed.parquet" -THRESHOLD_RATIO_ZEROS = 0.9 +IMPUTERS = ["knn", "iterative", "gene_mean"] -# KNN -N_NEIGHBORS = 10 +MAX_ITER = 10 +N_NEAREST_FEATURES = 50 -# ITERATIVE -MAX_ITERATIONS = 10 -N_NEAREST_FEATURES = 100 +MIN_NEIGHBOURS = 10 +MAX_NEIGHBOURS = 50 -IMPUTERS = ["knn", "iterative", "gene_mean"] +FACTOR_N_SAMPLES_TO_K = 2 + +BASE_N_CLUSTERS = 10 + +KEEP_EMPTY_FEATURES = True ##################################################### @@ -41,7 +46,13 @@ def parse_args(): parser.add_argument( "--counts", type=Path, dest="count_file", required=True, help="Count file" ) - parser.add_argument("--imputer", choices=IMPUTERS, required=True, dest="imputer") + parser.add_argument( + "--imputer", + choices=IMPUTERS, + required=True, + dest="imputer", + help="Imputer to use", + ) return parser.parse_args() @@ -51,30 +62,145 @@ def get_count_columns(df: pl.DataFrame): def apply_imputer(df: pl.DataFrame, imputer): # convert to numpy, impute, then convert back - count_matrix = df.select(get_count_columns(df)).to_numpy() + # we transpose the matrix so that each row is a sample and each column is a gene + # this is so that the imputer can use the gene expression values as features + # we transpose once it is a numpy array because numpty transposition is zero-copy transpose (just changes memory strides) + # the to_numpy method should be zero copy too, since all count columns have a float dtype + count_matrix = df.select(get_count_columns(df)).to_numpy().T # (n_samples, n_genes) imputed_array = imputer.fit_transform(count_matrix) - return df.with_columns(pl.DataFrame(imputed_array, schema=get_count_columns(df))) + return df.with_columns(pl.DataFrame(imputed_array.T, schema=get_count_columns(df))) def apply_simle_imputer(df: pl.DataFrame): - imputer = SimpleImputer() + imputer = SimpleImputer( + strategy="median", + copy=False, + keep_empty_features=KEEP_EMPTY_FEATURES, + ) return apply_imputer(df, imputer) +def get_number_of_neighbours(df: pl.DataFrame, k_min: int, k_max: int) -> int: + """ + Returns the number of neighbours to use for KNN-imputation based on the number of samples and missing values. + + Parameters + ---------- + df : pl.DataFrame + The input dataframe. + k_min : int + The minimum number of neighbours. + k_max : int + The maximum number of neighbours. + + Returns + ------- + int + The number of neighbours to use for KNN-imputation. + """ + # proportion of missing values in the dataframe + nb_missing_values = ( + df.select(pl.exclude(config.GENE_ID_COLNAME)) + .null_count() + .sum_horizontal() + .item() + ) + n_genes = len(df) + n_samples = df.select(pl.exclude(config.GENE_ID_COLNAME)).width + missing_fraction = nb_missing_values / (n_genes * n_samples) + # return k as a function of the number of samples and missing values, with bounds + return int( + np.clip( + int(np.sqrt(n_samples) / FACTOR_N_SAMPLES_TO_K * (1 + missing_fraction)), + k_min, + k_max, + ) + ) + + +def cluster_dataframe(df: pl.DataFrame, n_clusters: int) -> pl.Series: + """ + Cluster the dataframe using MiniBatchKMeans. + + Returns + ------- + pl.Series + Cluster labels for each gene. + """ + # replace missing values with mean values accross samples (for clustering only) + df_for_clustering = ( + df.select(pl.exclude(config.GENE_ID_COLNAME)) + .with_columns(mean_expression=pl.mean_horizontal(pl.all())) + .fill_null(pl.col("mean_expression")) + .drop("mean_expression") + ) + + # cluster — MiniBatchKMeans scales well + kmeans = MiniBatchKMeans( + n_clusters=n_clusters, + random_state=42, + ) + # return cluster labels (gene per gene) + return pl.Series(kmeans.fit_predict(df_for_clustering)) + + +def get_number_of_clusters(df: pl.DataFrame) -> int: + """ + Returns the number of clusters to use for KNN-imputation based on the number of samples and missing values. + In the very rare case where the number of samples is less than the base number of clusters, the number of clusters is set to the number of samples. + This is especially useful for some specific test cases where the number of samples is very small. + Parameters + ---------- + df : pl.DataFrame + The input dataframe. + + Returns + ------- + int + The number of clusters to use for KNN-imputation. + """ + return min(BASE_N_CLUSTERS, df.height) + + def apply_knn_imputer(df: pl.DataFrame) -> pl.DataFrame: - imputer = KNNImputer(n_neighbors=N_NEIGHBORS, weights="distance") - return apply_imputer(df, imputer) + n_neighbours = get_number_of_neighbours(df, MIN_NEIGHBOURS, MAX_NEIGHBOURS) + logger.info(f"Using {n_neighbours} neighbours") + imputer = KNNImputer( + n_neighbors=n_neighbours, + weights="distance", + copy=False, + keep_empty_features=KEEP_EMPTY_FEATURES, + ) + + n_clusters = get_number_of_clusters(df) + logger.info(f"Making {n_clusters} clusters using MiniBatchKMeans") + labels = cluster_dataframe(df, n_clusters=n_clusters) + + unique_labels = labels.unique() + for label in unique_labels: + cluster_mask = labels == label + cluster_df = df.filter(cluster_mask) + logger.info(f"Imputing cluster {label} ({cluster_df.shape[0]} genes)") + imputed_cluster_df = apply_imputer(cluster_df, imputer) + imputed_cluster_df.write_parquet(f"imputed_cluster_{label}.parquet") + + del df + return pl.concat( + [pl.read_parquet(f"imputed_cluster_{label}.parquet") for label in unique_labels] + ) def apply_iterative_imputer(df: pl.DataFrame) -> pl.DataFrame: imputer = IterativeImputer( - max_iter=MAX_ITERATIONS, + max_iter=MAX_ITER, + sample_posterior=True, n_nearest_features=N_NEAREST_FEATURES, - random_state=0, + random_state=42, initial_strategy="mean", min_value=0, max_value=1, imputation_order="random", + keep_empty_features=KEEP_EMPTY_FEATURES, verbose=1, ) return apply_imputer(df, imputer) @@ -96,12 +222,12 @@ def main(): # logger.info("Separating genes with high number of zeros") # df, high_zero_genes_df = separate_genes_with_high_number_of_zeros(count_df) - if args.imputer == "iterative": - logger.info("Applying iterative imputation") - df = apply_iterative_imputer(df) - elif args.imputer == "knn": + if args.imputer == "knn": logger.info("Applying KNN imputation") df = apply_knn_imputer(df) + elif args.imputer == "iterative": + logger.info("Applying iterative imputation") + df = apply_iterative_imputer(df) elif args.imputer == "gene_mean": logger.info("Applying simple imputation") df = apply_simle_imputer(df) diff --git a/bin/make_cross_join.py b/bin/make_cross_join.py index f28a597c..4cee93dc 100755 --- a/bin/make_cross_join.py +++ b/bin/make_cross_join.py @@ -49,13 +49,6 @@ def parse_args(): required=True, help="Index of chunk count file 2", ) - parser.add_argument( - "--task-attempts", - dest="task_attempts", - type=int, - default=1, - help="Number of task attempts", - ) return parser.parse_args() @@ -69,9 +62,8 @@ def parse_args(): def main(): args = parse_args() - low_memory = True if args.task_attempts > 1 else False - lf = pl.scan_parquet(args.count_file_1, low_memory=low_memory) - lf_other = pl.scan_parquet(args.count_file_2, low_memory=low_memory) + lf = pl.scan_parquet(args.count_file_1) + lf_other = pl.scan_parquet(args.count_file_2) logger.info("Computing cross join data") lf = lf.join( diff --git a/bin/make_pairwise_gene_expression_ratio.py b/bin/make_pairwise_gene_expression_ratio.py index 0fdc5715..04741d8b 100755 --- a/bin/make_pairwise_gene_expression_ratio.py +++ b/bin/make_pairwise_gene_expression_ratio.py @@ -7,6 +7,7 @@ from pathlib import Path import config +from common import get_nb_rows import polars as pl logging.basicConfig(level=logging.INFO) @@ -28,13 +29,6 @@ def parse_args(): required=True, help="File where each row contains counts for two genes", ) - parser.add_argument( - "--task-attempts", - dest="task_attempts", - type=int, - default=1, - help="Number of task attempts", - ) return parser.parse_args() @@ -50,9 +44,9 @@ def get_count_columns(lf: pl.LazyFrame) -> list[str]: ] -def compute_ratios(file: Path, low_memory: bool) -> pl.LazyFrame: +def compute_ratios(file: Path) -> pl.LazyFrame: # getting ratios for each sample - cross_join_lf = pl.scan_parquet(file, low_memory=low_memory) + cross_join_lf = pl.scan_parquet(file) column_pairs = { col: f"{col}_other" for col in get_count_columns(cross_join_lf) @@ -77,18 +71,18 @@ def compute_ratios(file: Path, low_memory: bool) -> pl.LazyFrame: def main(): args = parse_args() - low_memory = True if args.task_attempts > 1 else False - ratios_lf = compute_ratios(args.cross_joined_file, low_memory) + logger.info(f"Computing ratios for {str(args.cross_joined_file)}") + ratios_lf = compute_ratios(args.cross_joined_file) - ratios_df = ratios_lf.collect() - - if len(ratios_df) == 0: + if get_nb_rows(ratios_lf) == 0: raise ValueError( f"No output following treatment of file {str(args.cross_joined_file)}" ) outfilename = args.cross_joined_file.name.replace("cross_join", "ratios") - ratios_df.write_parquet(outfilename) + ratios_lf.sink_parquet(outfilename) + + logger.info(f"Wrote ratios to {outfilename}") if __name__ == "__main__": diff --git a/bin/make_parquet_chunks.py b/bin/make_parquet_chunks.py index 59b8df3a..67a01076 100755 --- a/bin/make_parquet_chunks.py +++ b/bin/make_parquet_chunks.py @@ -33,13 +33,6 @@ def parse_args(): required=True, help="File containing normalised counts for all genes and all samples", ) - parser.add_argument( - "--task-attempts", - dest="task_attempts", - type=int, - default=1, - help="Number of task attempts", - ) return parser.parse_args() @@ -47,11 +40,11 @@ def get_nb_rows(lf: pl.LazyFrame): return lf.select(pl.len()).collect().item() -def parse_count_dataset(file: Path, low_memory: bool) -> pl.LazyFrame: - lf = pl.scan_parquet(file, low_memory=low_memory).fill_null(0).fill_nan(0) +def parse_count_dataset(file: Path) -> pl.LazyFrame: + lf = pl.scan_parquet(file).fill_null(0).fill_nan(0) count_columns = get_count_columns(lf) cols = [pl.col(config.GENE_ID_COLNAME)] + [ - pl.col(column).replace({0: ZERO_REPLACE_VALUE}).cast(pl.Float64) + pl.col(column).replace({0: ZERO_REPLACE_VALUE}).cast(pl.Float32) for column in count_columns ] return lf.select(cols) @@ -99,9 +92,8 @@ def split_count_summary_in_chunks(lf: pl.LazyFrame): def main(): args = parse_args() - low_memory = True if args.task_attempts > 1 else False logger.info("Parsing count file") - lf = parse_count_dataset(args.count_file, low_memory) + lf = parse_count_dataset(args.count_file) logger.info("Splitting count file into chunks") split_count_summary_in_chunks(lf) diff --git a/bin/merge_counts.py b/bin/merge_counts.py index 0f9d426c..4cd06dd8 100755 --- a/bin/merge_counts.py +++ b/bin/merge_counts.py @@ -124,16 +124,15 @@ def make_tmp_sorted_dataframes( def formating_counts(lf: pl.LazyFrame): """ The config.GENE_ID_COLNAME column is cast - to String, and all other columns are cast to Float64. + to String, and all other columns are cast to Float32. """ - - # casting count columns to Float64 - # casting gene id column to Stringcount_files - # casting nans to nulls + # casting count columns to Float32 + # casting gene id column to String + # replacing nans with nulls logger.info("Cleaning merged lazyframe") return lf.select( [pl.col(config.GENE_ID_COLNAME).cast(pl.String)] - + [pl.col(column).cast(pl.Float64) for column in get_count_columns(lf)] + + [pl.col(column).cast(pl.Float32) for column in get_count_columns(lf)] ).fill_nan(None) diff --git a/bin/normfinder.py b/bin/normfinder.py index 7cd49282..1f7be649 100755 --- a/bin/normfinder.py +++ b/bin/normfinder.py @@ -66,7 +66,7 @@ def compute_minvars(z: np.ndarray, target_idx: np.ndarray) -> np.ndarray: if nsamples < 2: raise ValueError("Number of samples must be at least 2") - minvars = np.empty(len(target_idx), dtype=np.float64) + minvars = np.empty(len(target_idx), dtype=np.float32) for k in prange(len(target_idx)): i = target_idx[k] # checking if counts for this gene are all nans @@ -305,7 +305,7 @@ def get_unbiased_intragroup_variances(self): # cast all values to float (to avoid issues when concat) unbiased_intragroup_variance_dfs = [ - df.select([pl.col(col).cast(pl.Float64) for col in df.columns]) + df.select([pl.col(col).cast(pl.Float32) for col in df.columns]) for df in unbiased_intragroup_variance_dfs ] diff --git a/bin/quantile_normalise.py b/bin/quantile_normalise.py index 5b26f4d9..28fd110a 100755 --- a/bin/quantile_normalise.py +++ b/bin/quantile_normalise.py @@ -56,7 +56,7 @@ def quantile_normalise(df: pl.DataFrame, target_distribution: str): return df.with_columns( pl.exclude(config.GENE_ID_COLNAME).map_batches( lambda x: quantile_transform(x.to_frame(), **kwargs).flatten(), - return_dtype=pl.Float64, + return_dtype=pl.Float32, ) ) diff --git a/conf/modules/merging.config b/conf/modules/merging.config index f9c1e46d..58a26db1 100644 --- a/conf/modules/merging.config +++ b/conf/modules/merging.config @@ -5,4 +5,24 @@ process { maxForks = 1 } + withName: 'NFCORE_STABLEEXPRESSION:STABLEEXPRESSION:MERGE_DATA:GLOBAL' { + publishDir = [ + path: { "${params.outdir}/merged_counts" }, + mode: params.publish_dir_mode, + saveAs: { + filename -> 'all_counts.parquet' + } + ] + } + + withName: 'IMPUTE_MISSING_VALUES' { + publishDir = [ + path: { "${params.outdir}/merged_data" }, + mode: params.publish_dir_mode, + saveAs: { + filename -> 'all_counts.missing_values_imputed.parquet' + } + ] + } + } diff --git a/galaxy/tool_shed/tool/nf_core_stableexpression.xml b/galaxy/tool_shed/tool/nf_core_stableexpression.xml index 27ccaa5e..50ddc0f9 100644 --- a/galaxy/tool_shed/tool/nf_core_stableexpression.xml +++ b/galaxy/tool_shed/tool/nf_core_stableexpression.xml @@ -469,7 +469,7 @@ VERSION="1.1dev"; echo "$VERSION" name="missing_value_imputer" type="select" label="Type of imputation method to use for missing values" - help="The pipeline provides three options for imputing missing values: iterative, k-nearest neighbors, and gene mean. Iterative imputation uses a bayesian iterative algorithm to fill in missing values. K-nearest neighbors imputation uses a k-nearest neighbors algorithm to fill in missing values. Gene mean imputation is a very basic method that replaces missing values with the mean expression level of the gene across all samples." + help="The pipeline provides three options for imputing missing values: iterative, k-nearest neighbours, and gene mean. Iterative imputation uses a bayesian iterative algorithm to fill in missing values. K-nearest neighbors imputation uses a k-nearest neighbors algorithm to fill in missing values. Gene mean imputation is a very basic method that replaces missing values with the mean expression level of the gene across all samples." optional="true" > diff --git a/modules.json b/modules.json index ca279222..28c3fe5e 100644 --- a/modules.json +++ b/modules.json @@ -7,7 +7,7 @@ "nf-core": { "multiqc": { "branch": "master", - "git_sha": "79b36b51048048374b642289bfe9e591ef56fe05", + "git_sha": "98403d15b0e50edae1f3fec5eae5e24982f1fade", "installed_by": ["modules"] } } diff --git a/modules/local/filter_out_samples/with_too_many_missing_values/main.nf b/modules/local/filter_out_samples/with_too_many_missing_values/main.nf index ebbdc119..3b743950 100644 --- a/modules/local/filter_out_samples/with_too_many_missing_values/main.nf +++ b/modules/local/filter_out_samples/with_too_many_missing_values/main.nf @@ -17,7 +17,7 @@ process FILTER_OUT_SAMPLES_WITH_TOO_MANY_MISSING_VALUES { output: tuple val(meta), path("*.nulls_filtered.parquet"), optional: true, emit: counts path("ratio_null_values_per_sample.csv"), emit: ratio_nulls_per_sample - tuple val(meta.dataset), path("ratio_null_values.csv"), topic: ratio_nulls + tuple val(meta.dataset), path("ratio_null_values.csv"), topic: ratio_nulls tuple val(meta.dataset), env("NB_KEPT_SAMPLES"), env("NB_REJECTED_SAMPLES"), topic: mqc_missing_values_filter_stats tuple val("${task.process}"), val('python'), eval("python3 --version | sed 's/Python //'"), topic: versions tuple val("${task.process}"), val('polars'), eval('python3 -c "import polars; print(polars.__version__)"'), topic: versions diff --git a/modules/local/genorm/compute_m_measure/environment.yml b/modules/local/genorm/compute_m_measure/environment.yml index 45a97ad0..a6fbb4ac 100644 --- a/modules/local/genorm/compute_m_measure/environment.yml +++ b/modules/local/genorm/compute_m_measure/environment.yml @@ -5,4 +5,4 @@ channels: - bioconda dependencies: - conda-forge::python=3.14.3 - - conda-forge::polars==1.39.2 + - conda-forge::polars==1.41.2 diff --git a/modules/local/genorm/compute_m_measure/main.nf b/modules/local/genorm/compute_m_measure/main.nf index 0dadf854..6fb2797f 100644 --- a/modules/local/genorm/compute_m_measure/main.nf +++ b/modules/local/genorm/compute_m_measure/main.nf @@ -5,11 +5,11 @@ process COMPUTE_M_MEASURE { conda "${moduleDir}/environment.yml" container "${ workflow.containerEngine in ['singularity', 'apptainer'] && !task.ext.singularity_pull_docker_container ? - 'https://community-cr-prod.seqera.io/docker/registry/v2/blobs/sha256/00/00f1434368763cebf37466cfaaaf069f971f7eae65b010169975c50d084e5af3/data': - 'community.wave.seqera.io/library/polars_python:1a4a3322c56bfeb9' }" + 'https://community-cr-prod.seqera.io/docker/registry/v2/blobs/sha256/83/83ffc025ce0d913f9eaa4e786c9ebd2817ddc57f85d6596663f0e8a290872fab/data': + 'community.wave.seqera.io/library/polars_python:e0e89fee0d134a04' }" input: - tuple val(meta), path(count_file), path(ratio_files) + tuple val(meta), path(ratio_files) output: tuple val(meta), path("m_measures.csv"), emit: m_measures @@ -17,12 +17,9 @@ process COMPUTE_M_MEASURE { tuple val("${task.process}"), val('polars'), eval('python3 -c "import polars; print(polars.__version__)"'), topic: versions script: - def args = "--task-attempts ${task.attempt}" """ compute_m_measures.py \\ - --counts $count_file \\ - --std-files "$ratio_files" \\ - $args + --std-files "$ratio_files" """ } diff --git a/modules/local/genorm/cross_join/main.nf b/modules/local/genorm/cross_join/main.nf index aad36bfa..5c72df19 100644 --- a/modules/local/genorm/cross_join/main.nf +++ b/modules/local/genorm/cross_join/main.nf @@ -18,14 +18,12 @@ process CROSS_JOIN { script: - def args = "--task-attempts ${task.attempt}" """ make_cross_join.py \\ --file1 count_chunk_file_1 \\ --file2 count_chunk_file_2 \\ --index1 ${meta.index_1} \\ - --index2 ${meta.index_2} \\ - ${args} + --index2 ${meta.index_2} """ } diff --git a/modules/local/genorm/expression_ratio/main.nf b/modules/local/genorm/expression_ratio/main.nf index 6a3d1dd6..9c2c32a7 100644 --- a/modules/local/genorm/expression_ratio/main.nf +++ b/modules/local/genorm/expression_ratio/main.nf @@ -18,11 +18,9 @@ process EXPRESSION_RATIO { script: - def args = "--task-attempts ${task.attempt}" """ make_pairwise_gene_expression_ratio.py \\ - --file $file \\ - ${args} + --file $file """ } diff --git a/modules/local/genorm/make_chunks/main.nf b/modules/local/genorm/make_chunks/main.nf index e2802482..bed62b0e 100644 --- a/modules/local/genorm/make_chunks/main.nf +++ b/modules/local/genorm/make_chunks/main.nf @@ -18,11 +18,9 @@ process MAKE_CHUNKS { script: - def args = "--task-attempts ${task.attempt}" """ make_parquet_chunks.py \\ - --counts $count_file \\ - ${args} + --counts $count_file """ } diff --git a/modules/local/genorm/ratio_standard_variation/main.nf b/modules/local/genorm/ratio_standard_variation/main.nf index f0279938..e99d7ebb 100644 --- a/modules/local/genorm/ratio_standard_variation/main.nf +++ b/modules/local/genorm/ratio_standard_variation/main.nf @@ -18,11 +18,9 @@ process RATIO_STANDARD_VARIATION { script: - def args = "--task-attempts ${task.attempt}" """ get_ratio_standard_variation.py \\ - --file $file \\ - ${args} + --file $file """ } diff --git a/modules/nf-core/multiqc/.conda-lock/linux_amd64-bd-c1f4a7982b743963_1.txt b/modules/nf-core/multiqc/.conda-lock/linux_amd64-bd-c17fb751507e9dfc_1.txt similarity index 75% rename from modules/nf-core/multiqc/.conda-lock/linux_amd64-bd-c1f4a7982b743963_1.txt rename to modules/nf-core/multiqc/.conda-lock/linux_amd64-bd-c17fb751507e9dfc_1.txt index 76190304..2a91c22d 100644 --- a/modules/nf-core/multiqc/.conda-lock/linux_amd64-bd-c1f4a7982b743963_1.txt +++ b/modules/nf-core/multiqc/.conda-lock/linux_amd64-bd-c17fb751507e9dfc_1.txt @@ -14,120 +14,118 @@ linux-64: - conda: https://conda.anaconda.org/conda-forge/noarch/_python_abi3_support-1.0-hd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-26.1.0-pyhcf101f3_0.conda -- conda: https://conda.anaconda.org/conda-forge/noarch/backports.zstd-1.3.0-py314h680f03e_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/backports.zstd-1.5.0-py314h680f03e_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-python-1.2.0-py314h3de4e8d_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-hda65f42_9.conda -- conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2026.2.25-hbd8a1cb_0.conda -- conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2026.2.25-pyhd8ed1ab_0.conda -- conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.6-pyhd8ed1ab_0.conda -- conda: https://conda.anaconda.org/conda-forge/noarch/click-8.3.1-pyh8f84b5b_1.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2026.5.20-hbd8a1cb_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2026.5.20-pyhd8ed1ab_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.7-pyhd8ed1ab_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/click-8.4.0-pyhc90fa1f_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/coloredlogs-15.0.1-pyhd8ed1ab_4.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colormath-3.0.0-pyhd8ed1ab_4.conda -- conda: https://conda.anaconda.org/conda-forge/noarch/cpython-3.14.3-py314hd8ed1ab_101.conda -- conda: https://conda.anaconda.org/conda-forge/linux-64/expat-2.7.4-hecca717_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/cpython-3.14.5-py314hd8ed1ab_100.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/expat-2.8.1-hecca717_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-dejavu-sans-mono-2.37-hab24e00_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-inconsolata-3.000-h77eed37_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-source-code-pro-2.038-h77eed37_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-ubuntu-0.83-h77eed37_3.conda -- conda: https://conda.anaconda.org/conda-forge/linux-64/fontconfig-2.17.1-h27c8c51_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/fontconfig-2.18.0-h27c8c51_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-forge-1-hc364b38_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.3.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/humanfriendly-10.0-pyh707e725_8.conda - conda: https://conda.anaconda.org/conda-forge/noarch/humanize-4.15.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda -- conda: https://conda.anaconda.org/conda-forge/linux-64/icu-78.3-h33c6efd_0.conda -- conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.11-pyhd8ed1ab_0.conda -- conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.8.0-pyhcf101f3_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.15-pyhcf101f3_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-9.0.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.6-pyhcf101f3_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.26.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2025.9.1-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/kaleido-core-0.2.1-h3644ca4_0.tar.bz2 -- conda: https://conda.anaconda.org/conda-forge/linux-64/lcms2-2.18-h0c24ade_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/lcms2-2.19.1-h0c24ade_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.45.1-default_hbd61a6d_102.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/lerc-4.1.0-hdb68285_0.conda -- conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.11.0-5_h4a7cf45_openblas.conda -- conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.11.0-5_h0358290_openblas.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.11.0-7_h4a7cf45_openblas.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.11.0-7_h0358290_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.25-h17f619e_0.conda -- conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.7.4-hecca717_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.8.1-hecca717_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.5.2-h3435931_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libfreetype-2.14.3-ha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libfreetype6-2.14.3-h73754d4_0.conda -- conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-15.2.0-he0feb66_18.conda -- conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-15.2.0-h69a702a_18.conda -- conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-15.2.0-h69a702a_18.conda -- conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-15.2.0-h68bc16d_18.conda -- conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-15.2.0-he0feb66_18.conda -- conda: https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-3.1.2-hb03c661_0.conda -- conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.11.0-5_h47877c9_openblas.conda -- conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.8.2-hb03c661_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-15.2.0-he0feb66_19.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-15.2.0-h69a702a_19.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-15.2.0-h69a702a_19.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-15.2.0-h68bc16d_19.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-15.2.0-he0feb66_19.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-3.1.4.1-hb03c661_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.11.0-7_h47877c9_openblas.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.8.3-hb03c661_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libmpdec-4.0.0-hb03c661_1.conda -- conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.30-pthreads_h94d23a6_4.conda -- conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.55-h421ea60_0.conda -- conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.52.0-hf4e2dac_0.conda -- conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-15.2.0-h934c35e_18.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.33-pthreads_h94d23a6_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.58-h421ea60_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.53.1-h0c1763c_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-15.2.0-h934c35e_19.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.1-h9d88235_1.conda -- conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.41.3-h5347b49_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.42.1-h5347b49_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.6.0-hd42ef1d_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcb-1.17.0-h8a09558_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.2-h25fd6f3_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-3.10.2-pyhcf101f3_0.conda -- conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-4.0.0-pyhd8ed1ab_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-4.2.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.3-py314h67df5f8_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/mathjax-2.7.7-ha770c72_3.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda -- conda: https://conda.anaconda.org/bioconda/noarch/multiqc-1.33-pyhdfd78af_0.conda -- conda: https://conda.anaconda.org/conda-forge/noarch/narwhals-2.18.1-pyhcf101f3_1.conda +- conda: https://conda.anaconda.org/bioconda/noarch/multiqc-1.35-pyhdfd78af_1.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/narwhals-2.21.2-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/natsort-8.4.0-pyhcf101f3_2.conda -- conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-h2d0b736_3.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.6-hdb14827_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/networkx-3.6.1-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/nspr-4.38-h29cc59b_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/nss-3.118-h445c969_0.conda -- conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-2.4.3-py314h2b28147_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-2.4.6-py314h2b28147_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/openjpeg-2.5.4-h55fea9a_0.conda -- conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.6.1-h35e630c_1.conda -- conda: https://conda.anaconda.org/conda-forge/noarch/packaging-26.0-pyhcf101f3_0.conda -- conda: https://conda.anaconda.org/conda-forge/linux-64/pillow-12.1.1-py314h8ec4b1a_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.6.2-h35e630c_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/packaging-26.2-pyhc364b38_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/pillow-12.2.0-py314h8ec4b1a_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/plotly-6.6.0-pyhd8ed1ab_0.conda -- conda: https://conda.anaconda.org/conda-forge/noarch/polars-1.39.3-pyh58ad624_1.conda -- conda: https://conda.anaconda.org/conda-forge/noarch/polars-lts-cpu-1.34.0.deprecated-hc364b38_0.conda -- conda: https://conda.anaconda.org/conda-forge/linux-64/polars-runtime-32-1.39.3-py310hffdcd12_1.conda -- conda: https://conda.anaconda.org/conda-forge/linux-64/polars-runtime-compat-1.39.3-py310hbcd5346_1.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/polars-1.41.0-pyh58ad624_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/polars-runtime-32-1.41.0-py310h49dadd8_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/polars-runtime-compat-1.41.0-py310hcbd6021_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/procps-ng-4.0.6-h18c060e_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-hb9d3cd8_1002.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pyaml-env-1.2.2-pyhd8ed1ab_0.conda -- conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.12.5-pyhcf101f3_1.conda -- conda: https://conda.anaconda.org/conda-forge/linux-64/pydantic-core-2.41.5-py314h2e6c369_1.conda -- conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.2-pyhd8ed1ab_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.13.4-pyhcf101f3_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/pydantic-core-2.46.4-py314h2e6c369_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.20.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda -- conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.14.3-h32b2ec7_101_cp314.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.14.5-habeac84_100_cp314.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.2.2-pyhcf101f3_0.conda -- conda: https://conda.anaconda.org/conda-forge/noarch/python-gil-3.14.3-h4df99d1_101.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/python-gil-3.14.5-h4df99d1_100.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-kaleido-0.2.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.14-8_cp314.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.3-py314h67df5f8_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.3-h853b02a_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/referencing-0.37.0-pyhcf101f3_0.conda -- conda: https://conda.anaconda.org/conda-forge/linux-64/regex-2026.2.28-py314h5bd0f2a_0.conda -- conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.5-pyhcf101f3_1.conda -- conda: https://conda.anaconda.org/conda-forge/noarch/rich-14.3.3-pyhcf101f3_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/regex-2026.5.9-py314h5bd0f2a_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.34.2-pyhcf101f3_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/rich-15.0.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rich-click-1.9.7-pyh8f84b5b_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/rpds-py-0.30.0-py314h2e6c369_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/spectra-0.0.11-pyhd8ed1ab_2.conda -- conda: https://conda.anaconda.org/conda-forge/linux-64/sqlite-3.52.0-h04a0ce9_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/sqlite-3.53.1-hbc0de68_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/tiktoken-0.12.0-py314h67fec18_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h366c992_103.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.3-pyh8f84b5b_0.conda -- conda: https://conda.anaconda.org/conda-forge/noarch/typeguard-4.5.1-pyhd8ed1ab_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/typeguard-4.5.2-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.15.0-h396c80c_0.conda -- conda: https://conda.anaconda.org/conda-forge/noarch/typing-inspection-0.4.2-pyhd8ed1ab_1.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/typing-inspection-0.4.2-pyhcf101f3_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.15.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025c-hc9c84f9_1.conda -- conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.6.3-pyhd8ed1ab_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.7.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxau-1.0.12-hb03c661_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxdmcp-1.1.5-hb03c661_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/yaml-0.2.5-h280c20c_3.conda -- conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.23.0-pyhcf101f3_1.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/zipp-4.1.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zlib-ng-2.3.3-hceb46e0_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.7-hb78ec9c_6.conda packages: @@ -174,15 +172,15 @@ license: MIT license_family: MIT size: 64927 timestamp: 1773935801332 -- conda: https://conda.anaconda.org/conda-forge/noarch/backports.zstd-1.3.0-py314h680f03e_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/backports.zstd-1.5.0-py314h680f03e_0.conda noarch: generic -sha256: c31ab719d256bc6f89926131e88ecd0f0c5d003fe8481852c6424f4ec6c7eb29 -md5: a2ac7763a9ac75055b68f325d3255265 +sha256: a1c97297e867776760489537bc5ae36fa83a154be30e3b79385a39ca4cb058fe +md5: 1133126d840e75287d83947be3fc3e71 depends: - python >=3.14 license: BSD-3-Clause AND MIT AND EPL-2.0 -size: 7514 -timestamp: 1767044983590 +size: 7533 +timestamp: 1778594057496 - conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-python-1.2.0-py314h3de4e8d_1.conda sha256: 3ad3500bff54a781c29f16ce1b288b36606e2189d0b0ef2f67036554f47f12b0 md5: 8910d2c46f7e7b519129f486e0fe927a @@ -208,42 +206,42 @@ license: bzip2-1.0.6 license_family: BSD size: 260182 timestamp: 1771350215188 -- conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2026.2.25-hbd8a1cb_0.conda -sha256: 67cc7101b36421c5913a1687ef1b99f85b5d6868da3abbf6ec1a4181e79782fc -md5: 4492fd26db29495f0ba23f146cd5638d +- conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2026.5.20-hbd8a1cb_0.conda +sha256: 9812a303a1395e1dafbd92e5bc8a1ff6013bcbba0a09c7f03a8d23e43560aa9b +md5: 489b8e97e666c93f68fdb35c3c9b957f depends: - __unix license: ISC -size: 147413 -timestamp: 1772006283803 -- conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2026.2.25-pyhd8ed1ab_0.conda -sha256: a6b118fd1ed6099dc4fc03f9c492b88882a780fadaef4ed4f93dc70757713656 -md5: 765c4d97e877cdbbb88ff33152b86125 +size: 129868 +timestamp: 1779289852439 +- conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2026.5.20-pyhd8ed1ab_0.conda +sha256: 645655a3510e38e625da136595f3f16f2130c3263630cc3bc8f60f619ddbe490 +md5: 9fefff2f745ea1cc2ef15211a20c054a depends: - python >=3.10 license: ISC -size: 151445 -timestamp: 1772001170301 -- conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.6-pyhd8ed1ab_0.conda -sha256: d86dfd428b2e3c364fa90e07437c8405d635aa4ef54b25ab51d9c712be4112a5 -md5: 49ee13eb9b8f44d63879c69b8a40a74b +size: 134201 +timestamp: 1779285131141 +- conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.7-pyhd8ed1ab_0.conda +sha256: 3f9483d62ce24ecd063f8a5a714448445dc8d9e201147c46699fc0033e824457 +md5: a9167b9571f3baa9d448faa2139d1089 depends: - python >=3.10 license: MIT license_family: MIT -size: 58510 -timestamp: 1773660086450 -- conda: https://conda.anaconda.org/conda-forge/noarch/click-8.3.1-pyh8f84b5b_1.conda -sha256: 38cfe1ee75b21a8361c8824f5544c3866f303af1762693a178266d7f198e8715 -md5: ea8a6c3256897cc31263de9f455e25d9 +size: 58872 +timestamp: 1775127203018 +- conda: https://conda.anaconda.org/conda-forge/noarch/click-8.4.0-pyhc90fa1f_0.conda +sha256: 99ab8ef815c4520cce3a7482c2513f377c14348206857661d84c76a55e030f97 +md5: 003767c47f1f0a474c4de268b57839c3 depends: -- python >=3.10 - __unix - python +- python >=3.10 license: BSD-3-Clause license_family: BSD -size: 97676 -timestamp: 1764518652276 +size: 104631 +timestamp: 1779108494556 - conda: https://conda.anaconda.org/conda-forge/noarch/coloredlogs-15.0.1-pyhd8ed1ab_4.conda sha256: 8021c76eeadbdd5784b881b165242db9449783e12ce26d6234060026fd6a8680 md5: b866ff7007b934d564961066c8195983 @@ -265,27 +263,27 @@ license: BSD-3-Clause license_family: BSD size: 39326 timestamp: 1735759976140 -- conda: https://conda.anaconda.org/conda-forge/noarch/cpython-3.14.3-py314hd8ed1ab_101.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/cpython-3.14.5-py314hd8ed1ab_100.conda noarch: generic -sha256: 91b06300879df746214f7363d6c27c2489c80732e46a369eb2afc234bcafb44c -md5: 3bb89e4f795e5414addaa531d6b1500a +sha256: 777882d2685f368417f31bbe1b28f73687fc6c8f6a5768bda20ffeefa6b07f5b +md5: a749029ce5d0632a913db19d17f944ab depends: - python >=3.14,<3.15.0a0 - python_abi * *_cp314 license: Python-2.0 -size: 50078 -timestamp: 1770674447292 -- conda: https://conda.anaconda.org/conda-forge/linux-64/expat-2.7.4-hecca717_0.conda -sha256: 0cc345e4dead417996ce9a1f088b28d858f03d113d43c1963d29194366dcce27 -md5: a0535741a4934b3e386051065c58761a +size: 50212 +timestamp: 1779236682725 +- conda: https://conda.anaconda.org/conda-forge/linux-64/expat-2.8.1-hecca717_0.conda +sha256: 29a10599d56d93bd750914888ebe6822d47722070762b4647b34d12df9f4476e +md5: d0757fd84af06f065eba49d39af6c546 depends: - __glibc >=2.17,<3.0.a0 -- libexpat 2.7.4 hecca717_0 +- libexpat 2.8.1 hecca717_0 - libgcc >=14 license: MIT license_family: MIT -size: 145274 -timestamp: 1771259434699 +size: 148238 +timestamp: 1779278694477 - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-dejavu-sans-mono-2.37-hab24e00_0.tar.bz2 sha256: 58d7f40d2940dd0a8aa28651239adbf5613254df0f75789919c4e6762054403b md5: 0c96522c6bdaed4b1566d11387caaf45 @@ -314,21 +312,21 @@ license: LicenseRef-Ubuntu-Font-Licence-Version-1.0 license_family: Other size: 1620504 timestamp: 1727511233259 -- conda: https://conda.anaconda.org/conda-forge/linux-64/fontconfig-2.17.1-h27c8c51_0.conda -sha256: aa4a44dba97151221100a637c7f4bde619567afade9c0265f8e1c8eed8d7bd8c -md5: 867127763fbe935bab59815b6e0b7b5c +- conda: https://conda.anaconda.org/conda-forge/linux-64/fontconfig-2.18.0-h27c8c51_0.conda +sha256: e798086d8a65d55dc4c51f5746705639c9a5f2eeb0b8fc50e6152cfc0d69a4e8 +md5: 06965b2f9854d0b15e0443ee81fe83dc depends: - __glibc >=2.17,<3.0.a0 -- libexpat >=2.7.4,<3.0a0 -- libfreetype >=2.14.1 -- libfreetype6 >=2.14.1 +- libexpat >=2.8.1,<3.0a0 +- libfreetype >=2.14.3 +- libfreetype6 >=2.14.3 - libgcc >=14 -- libuuid >=2.41.3,<3.0a0 -- libzlib >=1.3.1,<2.0a0 +- libuuid >=2.42.1,<3.0a0 +- libzlib >=1.3.2,<2.0a0 license: MIT license_family: MIT -size: 270705 -timestamp: 1771382710863 +size: 280882 +timestamp: 1779421631622 - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-forge-1-hc364b38_1.conda sha256: 54eea8469786bc2291cc40bca5f46438d3e062a399e8f53f013b6a9f50e98333 md5: a7970cd949a077b7cb9696379d338681 @@ -390,37 +388,26 @@ license: MIT license_family: MIT size: 17397 timestamp: 1737618427549 -- conda: https://conda.anaconda.org/conda-forge/linux-64/icu-78.3-h33c6efd_0.conda -sha256: fbf86c4a59c2ed05bbffb2ba25c7ed94f6185ec30ecb691615d42342baa1a16a -md5: c80d8a3b84358cb967fa81e7075fbc8a -depends: -- __glibc >=2.17,<3.0.a0 -- libgcc >=14 -- libstdcxx >=14 -license: MIT -license_family: MIT -size: 12723451 -timestamp: 1773822285671 -- conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.11-pyhd8ed1ab_0.conda -sha256: ae89d0299ada2a3162c2614a9d26557a92aa6a77120ce142f8e0109bbf0342b0 -md5: 53abe63df7e10a6ba605dc5f9f961d36 +- conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.15-pyhcf101f3_0.conda +sha256: 3d25f9f6f7ab3e1ce6429fc8c8aae0335cf446692e715068488536d220cc43de +md5: 1b9083b7f00609605d1483dbc6071a81 depends: - python >=3.10 +- python license: BSD-3-Clause license_family: BSD -size: 50721 -timestamp: 1760286526795 -- conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.8.0-pyhcf101f3_0.conda -sha256: 82ab2a0d91ca1e7e63ab6a4939356667ef683905dea631bc2121aa534d347b16 -md5: 080594bf4493e6bae2607e65390c520a +size: 62642 +timestamp: 1779294335905 +- conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-9.0.0-pyhcf101f3_0.conda +sha256: 43e2a5497cad1598ff88a3e69f69bc88b7b8f141fa63c60eab5db296317318b8 +md5: ffc17e785d64e12fc311af9184221839 depends: - python >=3.10 - zipp >=3.20 - python license: Apache-2.0 -license_family: APACHE -size: 34387 -timestamp: 1773931568510 +size: 34766 +timestamp: 1779714582554 - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.6-pyhcf101f3_1.conda sha256: fc9ca7348a4f25fed2079f2153ecdcf5f9cf2a0bc36c4172420ca09e1849df7b md5: 04558c96691bed63104678757beb4f8d @@ -474,18 +461,18 @@ license: MIT license_family: MIT size: 62099926 timestamp: 1615199463039 -- conda: https://conda.anaconda.org/conda-forge/linux-64/lcms2-2.18-h0c24ade_0.conda -sha256: 836ec4b895352110335b9fdcfa83a8dcdbe6c5fb7c06c4929130600caea91c0a -md5: 6f2e2c8f58160147c4d1c6f4c14cbac4 +- conda: https://conda.anaconda.org/conda-forge/linux-64/lcms2-2.19.1-h0c24ade_0.conda +sha256: eb89c6c39f2f6a93db55723dbb2f6bba8c8e63e6312bf1abf13e6e9ff45849c8 +md5: f92f984b558e6e6204014b16d212b271 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=14 -- libjpeg-turbo >=3.1.2,<4.0a0 +- libjpeg-turbo >=3.1.4.1,<4.0a0 - libtiff >=4.7.1,<4.8.0a0 license: MIT license_family: MIT -size: 249959 -timestamp: 1768184673131 +size: 251086 +timestamp: 1778079286384 - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.45.1-default_hbd61a6d_102.conda sha256: 3d584956604909ff5df353767f3a2a2f60e07d070b328d109f30ac40cd62df6c md5: 18335a698559cdbcd86150a48bf54ba6 @@ -509,37 +496,37 @@ license: Apache-2.0 license_family: Apache size: 261513 timestamp: 1773113328888 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.11.0-5_h4a7cf45_openblas.conda -build_number: 5 -sha256: 18c72545080b86739352482ba14ba2c4815e19e26a7417ca21a95b76ec8da24c -md5: c160954f7418d7b6e87eaf05a8913fa9 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.11.0-7_h4a7cf45_openblas.conda +build_number: 7 +sha256: 081c850f99bc355821fac9c6e3727d40b3f8ce3beb50a5437cf03726b611ff39 +md5: 955b44e8b00b7f7ef4ce0130cef12394 depends: -- libopenblas >=0.3.30,<0.3.31.0a0 -- libopenblas >=0.3.30,<1.0a0 +- libopenblas >=0.3.33,<0.3.34.0a0 +- libopenblas >=0.3.33,<1.0a0 constrains: -- mkl <2026 -- liblapack 3.11.0 5*_openblas -- libcblas 3.11.0 5*_openblas -- blas 2.305 openblas -- liblapacke 3.11.0 5*_openblas +- libcblas 3.11.0 7*_openblas +- blas 2.307 openblas +- liblapack 3.11.0 7*_openblas +- liblapacke 3.11.0 7*_openblas +- mkl <2027 license: BSD-3-Clause license_family: BSD -size: 18213 -timestamp: 1765818813880 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.11.0-5_h0358290_openblas.conda -build_number: 5 -sha256: 0cbdcc67901e02dc17f1d19e1f9170610bd828100dc207de4d5b6b8ad1ae7ad8 -md5: 6636a2b6f1a87572df2970d3ebc87cc0 -depends: -- libblas 3.11.0 5_h4a7cf45_openblas +size: 18716 +timestamp: 1778489854108 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.11.0-7_h0358290_openblas.conda +build_number: 7 +sha256: 956ae0bb1ec8b0c3663d75b151aceb0521b54e513bf97f621a035f9c87037970 +md5: 0675639dc24cb0032f199e7ff68e4633 +depends: +- libblas 3.11.0 7_h4a7cf45_openblas constrains: -- liblapacke 3.11.0 5*_openblas -- blas 2.305 openblas -- liblapack 3.11.0 5*_openblas +- liblapacke 3.11.0 7*_openblas +- blas 2.307 openblas +- liblapack 3.11.0 7*_openblas license: BSD-3-Clause license_family: BSD -size: 18194 -timestamp: 1765818837135 +size: 18675 +timestamp: 1778489861559 - conda: https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.25-h17f619e_0.conda sha256: aa8e8c4be9a2e81610ddf574e05b64ee131fab5e0e3693210c9d6d2fba32c680 md5: 6c77a605a7a689d17d4819c0f8ac9a00 @@ -550,18 +537,18 @@ license: MIT license_family: MIT size: 73490 timestamp: 1761979956660 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.7.4-hecca717_0.conda -sha256: d78f1d3bea8c031d2f032b760f36676d87929b18146351c4464c66b0869df3f5 -md5: e7f7ce06ec24cfcfb9e36d28cf82ba57 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.8.1-hecca717_0.conda +sha256: 363018b25fdb5534c79783d912bd4b685a3547f4fc5996357ad548899b0ee8e7 +md5: 93764a5ca80616e9c10106cdaec92f74 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=14 constrains: -- expat 2.7.4.* +- expat 2.8.1.* license: MIT license_family: MIT -size: 76798 -timestamp: 1771259418166 +size: 77294 +timestamp: 1779278686680 - conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.5.2-h3435931_0.conda sha256: 31f19b6a88ce40ebc0d5a992c131f57d919f73c0b92cd1617a5bec83f6e961e6 md5: a360c33a5abe61c07959e449fa1453eb @@ -593,42 +580,42 @@ constrains: license: GPL-2.0-only OR FTL size: 384575 timestamp: 1774298162622 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-15.2.0-he0feb66_18.conda -sha256: faf7d2017b4d718951e3a59d081eb09759152f93038479b768e3d612688f83f5 -md5: 0aa00f03f9e39fb9876085dee11a85d4 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-15.2.0-he0feb66_19.conda +sha256: 8e0a3b5e41272e5678499b5dfc4cddb673f9e935de01eb0767ce857001229f46 +md5: 57736f29cc2b0ec0b6c2952d3f101b6a depends: - __glibc >=2.17,<3.0.a0 - _openmp_mutex >=4.5 constrains: -- libgcc-ng ==15.2.0=*_18 -- libgomp 15.2.0 he0feb66_18 +- libgcc-ng ==15.2.0=*_19 +- libgomp 15.2.0 he0feb66_19 license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL -size: 1041788 -timestamp: 1771378212382 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-15.2.0-h69a702a_18.conda -sha256: e318a711400f536c81123e753d4c797a821021fb38970cebfb3f454126016893 -md5: d5e96b1ed75ca01906b3d2469b4ce493 +size: 1041084 +timestamp: 1778269013026 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-15.2.0-h69a702a_19.conda +sha256: 9dcf54adfaa5e861123c2da4f2f0451a685464ea7e5a41ad91cf67b31d658d98 +md5: 331ee9b72b9dff570d56b1302c5ab37d depends: -- libgcc 15.2.0 he0feb66_18 +- libgcc 15.2.0 he0feb66_19 license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL -size: 27526 -timestamp: 1771378224552 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-15.2.0-h69a702a_18.conda -sha256: d2c9fad338fd85e4487424865da8e74006ab2e2475bd788f624d7a39b2a72aee -md5: 9063115da5bc35fdc3e1002e69b9ef6e +size: 27694 +timestamp: 1778269016987 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-15.2.0-h69a702a_19.conda +sha256: 561a42758ef25b9ce308c4e2cf56daee4f06138385a17e29a492cd928e00be6f +md5: 42bf7eca1a951735fa06c0e3c0d5c8e6 depends: -- libgfortran5 15.2.0 h68bc16d_18 +- libgfortran5 15.2.0 h68bc16d_19 constrains: -- libgfortran-ng ==15.2.0=*_18 +- libgfortran-ng ==15.2.0=*_19 license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL -size: 27523 -timestamp: 1771378269450 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-15.2.0-h68bc16d_18.conda -sha256: 539b57cf50ec85509a94ba9949b7e30717839e4d694bc94f30d41c9d34de2d12 -md5: 646855f357199a12f02a87382d429b75 +size: 27655 +timestamp: 1778269042954 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-15.2.0-h68bc16d_19.conda +sha256: 057978bb69fea29ed715a9b98adf71015c31baecc4aeb2bfc20d4fd5d83579d4 +md5: 85072b0ad177c966294f129b7c04a2d5 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=15.2.0 @@ -636,53 +623,53 @@ constrains: - libgfortran 15.2.0 license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL -size: 2482475 -timestamp: 1771378241063 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-15.2.0-he0feb66_18.conda -sha256: 21337ab58e5e0649d869ab168d4e609b033509de22521de1bfed0c031bfc5110 -md5: 239c5e9546c38a1e884d69effcf4c882 +size: 2483673 +timestamp: 1778269025089 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-15.2.0-he0feb66_19.conda +sha256: 5abe4ab9d93f6c9757d654f1969ae2267d4505315c1f2f8fe705fd60af084f1b +md5: faac990cb7aedc7f3a2224f2c9b0c26c depends: - __glibc >=2.17,<3.0.a0 license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL -size: 603262 -timestamp: 1771378117851 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-3.1.2-hb03c661_0.conda -sha256: cc9aba923eea0af8e30e0f94f2ad7156e2984d80d1e8e7fe6be5a1f257f0eb32 -md5: 8397539e3a0bbd1695584fb4f927485a +size: 603817 +timestamp: 1778268942614 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-3.1.4.1-hb03c661_0.conda +sha256: 10056646c28115b174de81a44e23e3a0a3b95b5347d2e6c45cc6d49d35294256 +md5: 6178c6f2fb254558238ef4e6c56fb782 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=14 constrains: - jpeg <0.0.0a license: IJG AND BSD-3-Clause AND Zlib -size: 633710 -timestamp: 1762094827865 -- conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.11.0-5_h47877c9_openblas.conda -build_number: 5 -sha256: c723b6599fcd4c6c75dee728359ef418307280fa3e2ee376e14e85e5bbdda053 -md5: b38076eb5c8e40d0106beda6f95d7609 -depends: -- libblas 3.11.0 5_h4a7cf45_openblas +size: 633831 +timestamp: 1775962768273 +- conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.11.0-7_h47877c9_openblas.conda +build_number: 7 +sha256: 96962084921f197c9ad13fb7f8b324f2351d50ff3d8d962148751ad532f54a01 +md5: 6569b4f273740e25dc0dc7e3232c2a6c +depends: +- libblas 3.11.0 7_h4a7cf45_openblas constrains: -- blas 2.305 openblas -- liblapacke 3.11.0 5*_openblas -- libcblas 3.11.0 5*_openblas +- liblapacke 3.11.0 7*_openblas +- libcblas 3.11.0 7*_openblas +- blas 2.307 openblas license: BSD-3-Clause license_family: BSD -size: 18200 -timestamp: 1765818857876 -- conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.8.2-hb03c661_0.conda -sha256: 755c55ebab181d678c12e49cced893598f2bab22d582fbbf4d8b83c18be207eb -md5: c7c83eecbb72d88b940c249af56c8b17 +size: 18694 +timestamp: 1778489869038 +- conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.8.3-hb03c661_0.conda +sha256: ec30e52a3c1bf7d0425380a189d209a52baa03f22fb66dd3eb587acaa765bd6d +md5: b88d90cad08e6bc8ad540cb310a761fb depends: - __glibc >=2.17,<3.0.a0 - libgcc >=14 constrains: -- xz 5.8.2.* +- xz 5.8.3.* license: 0BSD -size: 113207 -timestamp: 1768752626120 +size: 113478 +timestamp: 1775825492909 - conda: https://conda.anaconda.org/conda-forge/linux-64/libmpdec-4.0.0-hb03c661_1.conda sha256: fe171ed5cf5959993d43ff72de7596e8ac2853e9021dec0344e583734f1e0843 md5: 2c21e66f50753a083cbe6b80f38268fa @@ -693,53 +680,52 @@ license: BSD-2-Clause license_family: BSD size: 92400 timestamp: 1769482286018 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.30-pthreads_h94d23a6_4.conda -sha256: 199d79c237afb0d4780ccd2fbf829cea80743df60df4705202558675e07dd2c5 -md5: be43915efc66345cccb3c310b6ed0374 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.33-pthreads_h94d23a6_0.conda +sha256: 3d9aa85648e5e18a6d66db98b8c4317cc426721ad7a220aa86330d1ccedc8903 +md5: 2d3278b721e40468295ca755c3b84070 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=14 - libgfortran - libgfortran5 >=14.3.0 constrains: -- openblas >=0.3.30,<0.3.31.0a0 +- openblas >=0.3.33,<0.3.34.0a0 license: BSD-3-Clause license_family: BSD -size: 5927939 -timestamp: 1763114673331 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.55-h421ea60_0.conda -sha256: 36ade759122cdf0f16e2a2562a19746d96cf9c863ffaa812f2f5071ebbe9c03c -md5: 5f13ffc7d30ffec87864e678df9957b4 +size: 5931919 +timestamp: 1776993658641 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.58-h421ea60_0.conda +sha256: 377cfe037f3eeb3b1bf3ad333f724a64d32f315ee1958581fc671891d63d3f89 +md5: eba48a68a1a2b9d3c0d9511548db85db depends: -- libgcc >=14 - __glibc >=2.17,<3.0.a0 -- libzlib >=1.3.1,<2.0a0 +- libgcc >=14 +- libzlib >=1.3.2,<2.0a0 license: zlib-acknowledgement -size: 317669 -timestamp: 1770691470744 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.52.0-hf4e2dac_0.conda -sha256: d716847b7deca293d2e49ed1c8ab9e4b9e04b9d780aea49a97c26925b28a7993 -md5: fd893f6a3002a635b5e50ceb9dd2c0f4 +size: 317729 +timestamp: 1776315175087 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.53.1-h0c1763c_0.conda +sha256: 54cdcd3214313b62c2a8ee277e6f42150d9b748264c1b70d958bf735e420ef8d +md5: 7dc38adcbf71e6b38748e919e16e0dce depends: - __glibc >=2.17,<3.0.a0 -- icu >=78.2,<79.0a0 - libgcc >=14 -- libzlib >=1.3.1,<2.0a0 +- libzlib >=1.3.2,<2.0a0 license: blessing -size: 951405 -timestamp: 1772818874251 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-15.2.0-h934c35e_18.conda -sha256: 78668020064fdaa27e9ab65cd2997e2c837b564ab26ce3bf0e58a2ce1a525c6e -md5: 1b08cd684f34175e4514474793d44bcb +size: 954962 +timestamp: 1777986471789 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-15.2.0-h934c35e_19.conda +sha256: dff1058c76ec6b8759e41cefa2508162d00e4a5e6721aa68ec3fd10094e702dc +md5: 5794b3bdc38177caf969dabd3af08549 depends: - __glibc >=2.17,<3.0.a0 -- libgcc 15.2.0 he0feb66_18 +- libgcc 15.2.0 he0feb66_19 constrains: -- libstdcxx-ng ==15.2.0=*_18 +- libstdcxx-ng ==15.2.0=*_19 license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL -size: 5852330 -timestamp: 1771378262446 +size: 5852044 +timestamp: 1778269036376 - conda: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.1-h9d88235_1.conda sha256: e5f8c38625aa6d567809733ae04bb71c161a42e44a9fa8227abe61fa5c60ebe0 md5: cd5a90476766d53e901500df9215e927 @@ -757,16 +743,16 @@ depends: license: HPND size: 435273 timestamp: 1762022005702 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.41.3-h5347b49_0.conda -sha256: 1a7539cfa7df00714e8943e18de0b06cceef6778e420a5ee3a2a145773758aee -md5: db409b7c1720428638e7c0d509d3e1b5 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.42.1-h5347b49_0.conda +sha256: 3f0edf1280e2f6684a986f821eaa3e123d2694a00b31b96ca0d4a4c12c129231 +md5: 7d0a66598195ef00b6efc55aefc7453b depends: - __glibc >=2.17,<3.0.a0 - libgcc >=14 license: BSD-3-Clause license_family: BSD -size: 40311 -timestamp: 1766271528534 +size: 40163 +timestamp: 1779118517630 - conda: https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.6.0-hd42ef1d_0.conda sha256: 3aed21ab28eddffdaf7f804f49be7a7d701e8f0e46c856d801270b470820a37b md5: aea31d2e5b1091feca96fcfe945c3cf9 @@ -814,16 +800,16 @@ license: BSD-3-Clause license_family: BSD size: 85893 timestamp: 1770694658918 -- conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-4.0.0-pyhd8ed1ab_0.conda -sha256: 7b1da4b5c40385791dbc3cc85ceea9fad5da680a27d5d3cb8bfaa185e304a89e -md5: 5b5203189eb668f042ac2b0826244964 +- conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-4.2.0-pyhd8ed1ab_0.conda +sha256: 0c4c35376fe920714390d46e4b8d31c876d65f18e1655899e0763ec25f2a902f +md5: 6d03368f2b2b0a5fb6839df53b2eb5e0 depends: - mdurl >=0.1,<1 - python >=3.10 license: MIT license_family: MIT -size: 64736 -timestamp: 1754951288511 +size: 69017 +timestamp: 1778169663339 - conda: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.3-py314h67df5f8_1.conda sha256: c279be85b59a62d5c52f5dd9a4cd43ebd08933809a8416c22c3131595607d4cf md5: 9a17c4307d23318476d7fbf0fedc0cde @@ -854,9 +840,9 @@ license: MIT license_family: MIT size: 14465 timestamp: 1733255681319 -- conda: https://conda.anaconda.org/bioconda/noarch/multiqc-1.33-pyhdfd78af_0.conda -sha256: f005760b13093362fc9c997d603dd487de32ab2e821a3cbce52a42bcb8136517 -md5: 698a8a27c2b9d8a542c70cb47099a75e +- conda: https://conda.anaconda.org/bioconda/noarch/multiqc-1.35-pyhdfd78af_1.conda +sha256: e86033aa55a9e915e2d0957e770bdb81e3feb26a227d1adb17f9d6c528da6a71 +md5: cdb20309681ba3ce8f52c110e214d4f3 depends: - click - coloredlogs @@ -870,10 +856,11 @@ depends: - packaging - pillow >=10.2.0 - plotly >=5.18 -- polars-lts-cpu +- polars >=1.34.0 +- polars-runtime-compat >=1.34.0 - pyaml-env - pydantic >=2.7.1 -- python >=3.8,!=3.14.1 +- python >=3.9,!=3.14.1 - python-dotenv - python-kaleido 0.2.1 - pyyaml >=4 @@ -883,20 +870,21 @@ depends: - spectra >=0.0.10 - tiktoken - tqdm -- typeguard +- typeguard >=4 license: GPL-3.0-or-later license_family: GPL3 -size: 4198799 -timestamp: 1765300743879 -- conda: https://conda.anaconda.org/conda-forge/noarch/narwhals-2.18.1-pyhcf101f3_1.conda -sha256: 541fd4390a0687228b8578247f1536a821d9261389a65585af9d1a6f2a14e1e0 -md5: 30bec5e8f4c3969e2b1bd407c5e52afb +size: 4282188 +timestamp: 1779465338806 +- conda: https://conda.anaconda.org/conda-forge/noarch/narwhals-2.21.2-pyhcf101f3_0.conda +sha256: 70f43d62450927d51673eecd8823e14f5b3cfebdb43cda1d502eba97162bab42 +md5: 6687827c332121727ce383919e1ec8c2 depends: - python >=3.10 - python license: MIT -size: 280459 -timestamp: 1774380620329 +license_family: MIT +size: 284323 +timestamp: 1778929680962 - conda: https://conda.anaconda.org/conda-forge/noarch/natsort-8.4.0-pyhcf101f3_2.conda sha256: aeb1548eb72e4f198e72f19d242fb695b35add2ac7b2c00e0d83687052867680 md5: e941e85e273121222580723010bd4fa2 @@ -907,15 +895,15 @@ license: MIT license_family: MIT size: 39262 timestamp: 1770905275632 -- conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-h2d0b736_3.conda -sha256: 3fde293232fa3fca98635e1167de6b7c7fda83caf24b9d6c91ec9eefb4f4d586 -md5: 47e340acb35de30501a76c7c799c41d7 +- conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.6-hdb14827_0.conda +sha256: fc89f74bbe362fb29fa3c037697a89bec140b346a2469a90f7936d1d7ea4d8a3 +md5: fc21868a1a5aacc937e7a18747acb8a5 depends: - __glibc >=2.17,<3.0.a0 -- libgcc >=13 +- libgcc >=14 license: X11 AND BSD-3-Clause -size: 891641 -timestamp: 1738195959188 +size: 918956 +timestamp: 1777422145199 - conda: https://conda.anaconda.org/conda-forge/noarch/networkx-3.6.1-pyhcf101f3_0.conda sha256: f6a82172afc50e54741f6f84527ef10424326611503c64e359e25a19a8e4c1c6 md5: a2c1eeadae7a309daed9d62c96012a2b @@ -956,24 +944,24 @@ license: MPL-2.0 license_family: MOZILLA size: 2057773 timestamp: 1763485556350 -- conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-2.4.3-py314h2b28147_0.conda -sha256: f2ba8cb0d86a6461a6bcf0d315c80c7076083f72c6733c9290086640723f79ec -md5: 36f5b7eb328bdc204954a2225cf908e2 +- conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-2.4.6-py314h2b28147_0.conda +sha256: bc61ae892973751a6b0e6ecea57ed6d7053224bddcb007165d6ceb1d7344ad47 +md5: f49b5f950379e0b97c35ca97682f7c6a depends: - python - libstdcxx >=14 - libgcc >=14 - __glibc >=2.17,<3.0.a0 -- python_abi 3.14.* *_cp314 -- libcblas >=3.9.0,<4.0a0 - liblapack >=3.9.0,<4.0a0 +- python_abi 3.14.* *_cp314 - libblas >=3.9.0,<4.0a0 +- libcblas >=3.9.0,<4.0a0 constrains: - numpy-base <0a0 license: BSD-3-Clause license_family: BSD -size: 8927860 -timestamp: 1773839233468 +size: 8928909 +timestamp: 1779169198391 - conda: https://conda.anaconda.org/conda-forge/linux-64/openjpeg-2.5.4-h55fea9a_0.conda sha256: 3900f9f2dbbf4129cf3ad6acf4e4b6f7101390b53843591c53b00f034343bc4d md5: 11b3379b191f63139e29c0d19dee24cd @@ -988,48 +976,48 @@ license: BSD-2-Clause license_family: BSD size: 355400 timestamp: 1758489294972 -- conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.6.1-h35e630c_1.conda -sha256: 44c877f8af015332a5d12f5ff0fb20ca32f896526a7d0cdb30c769df1144fb5c -md5: f61eb8cd60ff9057122a3d338b99c00f +- conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.6.2-h35e630c_0.conda +sha256: c0ef482280e38c71a08ad6d71448194b719630345b0c9c60744a2010e8a8e0cb +md5: da1b85b6a87e141f5140bb9924cecab0 depends: - __glibc >=2.17,<3.0.a0 - ca-certificates - libgcc >=14 license: Apache-2.0 license_family: Apache -size: 3164551 -timestamp: 1769555830639 -- conda: https://conda.anaconda.org/conda-forge/noarch/packaging-26.0-pyhcf101f3_0.conda -sha256: c1fc0f953048f743385d31c468b4a678b3ad20caffdeaa94bed85ba63049fd58 -md5: b76541e68fea4d511b1ac46a28dcd2c6 +size: 3167099 +timestamp: 1775587756857 +- conda: https://conda.anaconda.org/conda-forge/noarch/packaging-26.2-pyhc364b38_0.conda +sha256: 3906abfb6511a3bb309e39b9b1b7bc38f50a723971de2395489fd1f379255890 +md5: 4c06a92e74452cfa53623a81592e8934 depends: - python >=3.8 - python license: Apache-2.0 license_family: APACHE -size: 72010 -timestamp: 1769093650580 -- conda: https://conda.anaconda.org/conda-forge/linux-64/pillow-12.1.1-py314h8ec4b1a_0.conda -sha256: 9e6ec8f3213e8b7d64b0ad45f84c51a2c9eba4398efda31e196c9a56186133ee -md5: 79678378ae235e24b3aa83cee1b38207 +size: 91574 +timestamp: 1777103621679 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pillow-12.2.0-py314h8ec4b1a_0.conda +sha256: 123d8a7c16c88658b4f29e9f115a047598c941708dade74fbaff373a32dbec5e +md5: 76c4757c0ec9d11f969e8eb44899307b depends: - python - libgcc >=14 - __glibc >=2.17,<3.0.a0 +- libtiff >=4.7.1,<4.8.0a0 +- openjpeg >=2.5.4,<3.0a0 +- libxcb >=1.17.0,<2.0a0 - libwebp-base >=1.6.0,<2.0a0 - zlib-ng >=2.3.3,<2.4.0a0 -- python_abi 3.14.* *_cp314 -- tk >=8.6.13,<8.7.0a0 - libjpeg-turbo >=3.1.2,<4.0a0 -- libxcb >=1.17.0,<2.0a0 -- openjpeg >=2.5.4,<3.0a0 +- python_abi 3.14.* *_cp314 +- libfreetype >=2.14.3 +- libfreetype6 >=2.14.3 - lcms2 >=2.18,<3.0a0 -- libtiff >=4.7.1,<4.8.0a0 -- libfreetype >=2.14.1 -- libfreetype6 >=2.14.1 +- tk >=8.6.13,<8.7.0a0 license: HPND -size: 1073026 -timestamp: 1770794002408 +size: 1082797 +timestamp: 1775060059882 - conda: https://conda.anaconda.org/conda-forge/noarch/plotly-6.6.0-pyhd8ed1ab_0.conda sha256: c418d325359fc7a0074cea7f081ef1bce26e114d2da8a0154c5d27ecc87a08e7 md5: 3e9427ee186846052e81fadde8ebe96a @@ -1043,11 +1031,11 @@ license: MIT license_family: MIT size: 5251872 timestamp: 1772628857717 -- conda: https://conda.anaconda.org/conda-forge/noarch/polars-1.39.3-pyh58ad624_1.conda -sha256: d332c2d5002fc440ae37ed9679ffc21b552f18d20232390005d1dd3bce0888d3 -md5: d5a4e013a30dd8dfde9ab39f45aaf9c1 +- conda: https://conda.anaconda.org/conda-forge/noarch/polars-1.41.0-pyh58ad624_0.conda +sha256: 70fc56877c4a095ee658d61924d8019768fbae4a48437058d181fc94b0a7c4d8 +md5: 25a883fed9f1f3f21ff317a3e7c92ac4 depends: -- polars-runtime-32 ==1.39.3 +- polars-runtime-32 ==1.41.0 - python >=3.10 - python constrains: @@ -1061,57 +1049,44 @@ constrains: - pyiceberg >=0.7.1 - altair >=5.4.0 - great_tables >=0.8.0 -- polars-runtime-32 ==1.39.3 -- polars-runtime-64 ==1.39.3 -- polars-runtime-compat ==1.39.3 +- polars-runtime-32 ==1.41.0 +- polars-runtime-64 ==1.41.0 +- polars-runtime-compat ==1.41.0 license: MIT -license_family: MIT -size: 533495 -timestamp: 1774207987966 -- conda: https://conda.anaconda.org/conda-forge/noarch/polars-lts-cpu-1.34.0.deprecated-hc364b38_0.conda -sha256: e466fb31f67ba9bde18deafeb34263ca5eb25807f39ead0e9d753a8e82c4c4f4 -md5: ef0340e75068ac8ff96462749b5c98e7 -depends: -- polars >=1.34.0 -- polars-runtime-compat >=1.34.0 -license: MIT -license_family: MIT -size: 3902 -timestamp: 1760206808444 -- conda: https://conda.anaconda.org/conda-forge/linux-64/polars-runtime-32-1.39.3-py310hffdcd12_1.conda +size: 539656 +timestamp: 1779630790562 +- conda: https://conda.anaconda.org/conda-forge/linux-64/polars-runtime-32-1.41.0-py310h49dadd8_0.conda noarch: python -sha256: 9744f8086bb0832998f5b01076f57ddc9efbe460e493b14303c3567dc4f401e7 -md5: f9327f9f2cfc4215f55b613e64afd3ba +sha256: e51ee3fe5259f2e115b2f78f8fbe3554e419c7c82b0c110878e12a5ff95ce3ab +md5: 7682765a1588e5ac887c99736d297c93 depends: - python +- __glibc >=2.17,<3.0.a0 - libstdcxx >=14 - libgcc >=14 -- __glibc >=2.17,<3.0.a0 - _python_abi3_support 1.* - cpython >=3.10 constrains: - __glibc >=2.17 license: MIT -license_family: MIT -size: 37570276 -timestamp: 1774207987966 -- conda: https://conda.anaconda.org/conda-forge/linux-64/polars-runtime-compat-1.39.3-py310hbcd5346_1.conda +size: 42578921 +timestamp: 1779630790562 +- conda: https://conda.anaconda.org/conda-forge/linux-64/polars-runtime-compat-1.41.0-py310hcbd6021_0.conda noarch: python -sha256: bf0b932713f0f27924f42159c98426e0073bb6145ed796eaa4cec79ca05363c7 -md5: 4b9b312453eebd6fbdbbe2a88fa1b5c4 +sha256: 29c3831c92394af11d9f7d04882dda9479ffbb76a3d36ba155d52159d67805fa +md5: cb0b620c9914a07a9022cb8b183ea9ee depends: - python -- libgcc >=14 - libstdcxx >=14 +- libgcc >=14 - __glibc >=2.17,<3.0.a0 - _python_abi3_support 1.* - cpython >=3.10 constrains: - __glibc >=2.17 license: MIT -license_family: MIT -size: 37224264 -timestamp: 1774207985377 +size: 41864944 +timestamp: 1779630722548 - conda: https://conda.anaconda.org/conda-forge/linux-64/procps-ng-4.0.6-h18c060e_0.conda sha256: 4ce2e1ee31a6217998f78c31ce7dc0a3e0557d9238b51d49dd20c52d467a126d md5: f2c23a77b25efcad57d377b34bd84941 @@ -1143,24 +1118,23 @@ license: MIT license_family: MIT size: 14645 timestamp: 1736766960536 -- conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.12.5-pyhcf101f3_1.conda -sha256: 868569d9505b7fe246c880c11e2c44924d7613a8cdcc1f6ef85d5375e892f13d -md5: c3946ed24acdb28db1b5d63321dbca7d +- conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.13.4-pyhcf101f3_0.conda +sha256: 69700e31165df070e9716315e042196aa92525dae5deb5107785847ab9f4189f +md5: 729843edafc0899b3348bd3f19525b9d depends: - typing-inspection >=0.4.2 - typing_extensions >=4.14.1 - python >=3.10 -- typing-extensions >=4.6.1 - annotated-types >=0.6.0 -- pydantic-core ==2.41.5 +- pydantic-core ==2.46.4 - python license: MIT license_family: MIT -size: 340482 -timestamp: 1764434463101 -- conda: https://conda.anaconda.org/conda-forge/linux-64/pydantic-core-2.41.5-py314h2e6c369_1.conda -sha256: 7e0ae379796e28a429f8e48f2fe22a0f232979d65ec455e91f8dac689247d39f -md5: 432b0716a1dfac69b86aa38fdd59b7e6 +size: 346511 +timestamp: 1778103405862 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pydantic-core-2.46.4-py314h2e6c369_0.conda +sha256: 802e216c39f1359aed60823b6e11d8ccd812b0ae1c81ae5ac1c81f99446409ab +md5: 0c96993dbeadf3a277cf757b9f1c9412 depends: - python - typing-extensions >=4.6.0,!=4.7.0 @@ -1171,17 +1145,17 @@ constrains: - __glibc >=2.17 license: MIT license_family: MIT -size: 1943088 -timestamp: 1762988995556 -- conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.2-pyhd8ed1ab_0.conda -sha256: 5577623b9f6685ece2697c6eb7511b4c9ac5fb607c9babc2646c811b428fd46a -md5: 6b6ece66ebcae2d5f326c77ef2c5a066 +size: 1895020 +timestamp: 1778084229247 +- conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.20.0-pyhd8ed1ab_0.conda +sha256: cf70b2f5ad9ae472b71235e5c8a736c9316df3705746de419b59d442e8348e86 +md5: 16c18772b340887160c79a6acc022db0 depends: -- python >=3.9 +- python >=3.10 license: BSD-2-Clause license_family: BSD -size: 889287 -timestamp: 1750615908735 +size: 893031 +timestamp: 1774796815820 - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda sha256: ba3b032fa52709ce0d9fd388f63d330a026754587a2f461117cac9ab73d8d0d8 md5: 461219d1a5bd61342293efa2c0c90eac @@ -1192,32 +1166,32 @@ license: BSD-3-Clause license_family: BSD size: 21085 timestamp: 1733217331982 -- conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.14.3-h32b2ec7_101_cp314.conda -build_number: 101 -sha256: cb0628c5f1732f889f53a877484da98f5a0e0f47326622671396fb4f2b0cd6bd -md5: c014ad06e60441661737121d3eae8a60 +- conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.14.5-habeac84_100_cp314.conda +build_number: 100 +sha256: 55eed9bf2a3f6e90311276f0834737fe7c2d9ec3e5e2e557507858df4c7521e6 +md5: da92e59ff92f2d5ede4f612af20f583f depends: - __glibc >=2.17,<3.0.a0 - bzip2 >=1.0.8,<2.0a0 - ld_impl_linux-64 >=2.36.1 -- libexpat >=2.7.3,<3.0a0 +- libexpat >=2.8.0,<3.0a0 - libffi >=3.5.2,<3.6.0a0 - libgcc >=14 -- liblzma >=5.8.2,<6.0a0 +- liblzma >=5.8.3,<6.0a0 - libmpdec >=4.0.0,<5.0a0 -- libsqlite >=3.51.2,<4.0a0 -- libuuid >=2.41.3,<3.0a0 -- libzlib >=1.3.1,<2.0a0 -- ncurses >=6.5,<7.0a0 -- openssl >=3.5.5,<4.0a0 +- libsqlite >=3.53.1,<4.0a0 +- libuuid >=2.42.1,<3.0a0 +- libzlib >=1.3.2,<2.0a0 +- ncurses >=6.6,<7.0a0 +- openssl >=3.5.6,<4.0a0 - python_abi 3.14.* *_cp314 - readline >=8.3,<9.0a0 - tk >=8.6.13,<8.7.0a0 - tzdata - zstd >=1.5.7,<1.6.0a0 license: Python-2.0 -size: 36702440 -timestamp: 1770675584356 +size: 36745188 +timestamp: 1779236923603 python_site_packages_path: lib/python3.14/site-packages - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.2.2-pyhcf101f3_0.conda sha256: 74e417a768f59f02a242c25e7db0aa796627b5bc8c818863b57786072aeb85e5 @@ -1228,15 +1202,15 @@ license: BSD-3-Clause license_family: BSD size: 27848 timestamp: 1772388605021 -- conda: https://conda.anaconda.org/conda-forge/noarch/python-gil-3.14.3-h4df99d1_101.conda -sha256: 233aebd94c704ac112afefbb29cf4170b7bc606e22958906f2672081bc50638a -md5: 235765e4ea0d0301c75965985163b5a1 +- conda: https://conda.anaconda.org/conda-forge/noarch/python-gil-3.14.5-h4df99d1_100.conda +sha256: 41dd7da285d71d519257fa7dacb1cae060d5ebfaa5f92cba5994899d2978e943 +md5: 41954747ba952ec4b01e16c2c9e8d8ff depends: -- cpython 3.14.3.* +- cpython 3.14.5.* - python_abi * *_cp314 license: Python-2.0 -size: 50062 -timestamp: 1770674497152 +size: 50212 +timestamp: 1779236703009 - conda: https://conda.anaconda.org/conda-forge/noarch/python-kaleido-0.2.1-pyhd8ed1ab_0.tar.bz2 sha256: e17bf63a30aec33432f1ead86e15e9febde9fc40a7f869c0e766be8d2db44170 md5: 310259a5b03ff02289d7705f39e2b1d2 @@ -1294,9 +1268,9 @@ license: MIT license_family: MIT size: 51788 timestamp: 1760379115194 -- conda: https://conda.anaconda.org/conda-forge/linux-64/regex-2026.2.28-py314h5bd0f2a_0.conda -sha256: e085e336f1446f5263a3ec9747df8c719b6996753901181add50dc4fdd8bb2e8 -md5: 3c8b6a8c4d0ff5a264e9831eac4941f4 +- conda: https://conda.anaconda.org/conda-forge/linux-64/regex-2026.5.9-py314h5bd0f2a_0.conda +sha256: c7a4aca4977c15c82d053b06cbc676460974c1b25757cfeea8a9a2497ac911f8 +md5: 9dd235b6ac69a0198080dac39f9891aa depends: - __glibc >=2.17,<3.0.a0 - libgcc >=14 @@ -1304,27 +1278,27 @@ depends: - python_abi 3.14.* *_cp314 license: Apache-2.0 AND CNRI-Python license_family: PSF -size: 411924 -timestamp: 1772255161535 -- conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.5-pyhcf101f3_1.conda -sha256: 7813c38b79ae549504b2c57b3f33394cea4f2ad083f0994d2045c2e24cb538c5 -md5: c65df89a0b2e321045a9e01d1337b182 +size: 413611 +timestamp: 1778374155646 +- conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.34.2-pyhcf101f3_0.conda +sha256: 1715246b19c9f85ee022933b4845f2fc14ac9184981b7b7d9b728bec8e9588da +md5: 4a85203c1d80c1059086ae860836ffb9 depends: - python >=3.10 -- certifi >=2017.4.17 +- certifi >=2023.5.7 - charset-normalizer >=2,<4 - idna >=2.5,<4 -- urllib3 >=1.21.1,<3 +- urllib3 >=1.26,<3 - python constrains: -- chardet >=3.0.2,<6 +- chardet >=3.0.2,<8 license: Apache-2.0 license_family: APACHE -size: 63602 -timestamp: 1766926974520 -- conda: https://conda.anaconda.org/conda-forge/noarch/rich-14.3.3-pyhcf101f3_0.conda -sha256: b06ce84d6a10c266811a7d3adbfa1c11f13393b91cc6f8a5b468277d90be9590 -md5: 7a6289c50631d620652f5045a63eb573 +size: 68709 +timestamp: 1778851103479 +- conda: https://conda.anaconda.org/conda-forge/noarch/rich-15.0.0-pyhcf101f3_0.conda +sha256: 3d6ba2c0fcdac3196ba2f0615b4104e532525ffa1335b50a2878be5ff488814a +md5: 0242025a3c804966bf71aa04eee82f66 depends: - markdown-it-py >=2.2.0 - pygments >=2.13.0,<3.0.0 @@ -1333,8 +1307,8 @@ depends: - python license: MIT license_family: MIT -size: 208472 -timestamp: 1771572730357 +size: 208577 +timestamp: 1775991661559 - conda: https://conda.anaconda.org/conda-forge/noarch/rich-click-1.9.7-pyh8f84b5b_0.conda sha256: aa3fcb167321bae51998de2e94d199109c9024f25a5a063cb1c28d8f1af33436 md5: 0c20a8ebcddb24a45da89d5e917e6cb9 @@ -1373,20 +1347,19 @@ license: MIT license_family: MIT size: 22284 timestamp: 1735770589188 -- conda: https://conda.anaconda.org/conda-forge/linux-64/sqlite-3.52.0-h04a0ce9_0.conda -sha256: c9af81e7830d9c4b67a7f48e512d060df2676b29cac59e3b31f09dbfcee29c58 -md5: 7d9d7efe9541d4bb71b5934e8ee348ea +- conda: https://conda.anaconda.org/conda-forge/linux-64/sqlite-3.53.1-hbc0de68_0.conda +sha256: d167fa92781bcdcd3b9aaa6bb1cd50c5b108f6190c170098a118b5cf5df2f881 +md5: 8e0b8654ead18e50af552e54b5a08a61 depends: - __glibc >=2.17,<3.0.a0 -- icu >=78.2,<79.0a0 - libgcc >=14 -- libsqlite 3.52.0 hf4e2dac_0 -- libzlib >=1.3.1,<2.0a0 -- ncurses >=6.5,<7.0a0 +- libsqlite 3.53.1 h0c1763c_0 +- libzlib >=1.3.2,<2.0a0 +- ncurses >=6.6,<7.0a0 - readline >=8.3,<9.0a0 license: blessing -size: 203641 -timestamp: 1772818888368 +size: 205399 +timestamp: 1777986477546 - conda: https://conda.anaconda.org/conda-forge/linux-64/tiktoken-0.12.0-py314h67fec18_3.conda sha256: 7e395d67fd249d901beb1ae269057763c0d8c3ee5f7a348694bdb16d158a37d9 md5: d705f9d8a1185a2b01cced191177a028 @@ -1427,20 +1400,20 @@ depends: license: MPL-2.0 and MIT size: 94132 timestamp: 1770153424136 -- conda: https://conda.anaconda.org/conda-forge/noarch/typeguard-4.5.1-pyhd8ed1ab_0.conda -sha256: 39d8ae33c43cdb8f771373e149b0b4fae5a08960ac58dcca95b2f1642bb17448 -md5: 260af1b0a94f719de76b4e14094e9a3b +- conda: https://conda.anaconda.org/conda-forge/noarch/typeguard-4.5.2-pyhcf101f3_0.conda +sha256: 59d7851d32fddb5b510272e6557aa982edeb927d349648dac27f5bf01d18bb26 +md5: 4460f039b7dedf15f7df086446ca75ae depends: -- importlib-metadata >=3.6 -- python >=3.10 -- typing-extensions >=4.10.0 - typing_extensions >=4.14.0 +- python >=3.10 +- importlib-metadata >=3.6 +- python constrains: - pytest >=7 license: MIT license_family: MIT -size: 36838 -timestamp: 1771532971545 +size: 38297 +timestamp: 1778779291237 - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.15.0-h396c80c_0.conda sha256: 7c2df5721c742c2a47b2c8f960e718c930031663ac1174da67c1ed5999f7938c md5: edd329d7d3a4ab45dcf905899a7a6115 @@ -1450,16 +1423,17 @@ license: PSF-2.0 license_family: PSF size: 91383 timestamp: 1756220668932 -- conda: https://conda.anaconda.org/conda-forge/noarch/typing-inspection-0.4.2-pyhd8ed1ab_1.conda -sha256: 70db27de58a97aeb7ba7448366c9853f91b21137492e0b4430251a1870aa8ff4 -md5: a0a4a3035667fc34f29bfbd5c190baa6 +- conda: https://conda.anaconda.org/conda-forge/noarch/typing-inspection-0.4.2-pyhcf101f3_2.conda +sha256: 8b90d2f19f9458b8c58a55e1fcdc1d90c1603a847a47654d8a454549413ba60a +md5: 53f5409c5cfd6c5a66417d68e3f0a864 depends: - python >=3.10 - typing_extensions >=4.12.0 +- python license: MIT license_family: MIT -size: 18923 -timestamp: 1764158430324 +size: 20935 +timestamp: 1777105465795 - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.15.0-pyhcf101f3_0.conda sha256: 032271135bca55aeb156cee361c81350c6f3fb203f57d024d7e5a1fc9ef18731 md5: 0caa1af407ecff61170c9437a808404d @@ -1476,9 +1450,9 @@ md5: ad659d0a2b3e47e38d829aa8cad2d610 license: LicenseRef-Public-Domain size: 119135 timestamp: 1767016325805 -- conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.6.3-pyhd8ed1ab_0.conda -sha256: af641ca7ab0c64525a96fd9ad3081b0f5bcf5d1cbb091afb3f6ed5a9eee6111a -md5: 9272daa869e03efe68833e3dc7a02130 +- conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.7.0-pyhd8ed1ab_0.conda +sha256: feff959a816f7988a0893201aa9727bbb7ee1e9cec2c4f0428269b489eb93fb4 +md5: cbb88288f74dbe6ada1c6c7d0a97223e depends: - backports.zstd >=1.0.0 - brotli-python >=1.2.0 @@ -1487,8 +1461,8 @@ depends: - python >=3.10 license: MIT license_family: MIT -size: 103172 -timestamp: 1767817860341 +size: 103560 +timestamp: 1778188657149 - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxau-1.0.12-hb03c661_1.conda sha256: 6bc6ab7a90a5d8ac94c7e300cc10beb0500eeba4b99822768ca2f2ef356f731b md5: b2895afaf55bf96a8c8282a2e47a5de0 @@ -1519,16 +1493,16 @@ license: MIT license_family: MIT size: 85189 timestamp: 1753484064210 -- conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.23.0-pyhcf101f3_1.conda -sha256: b4533f7d9efc976511a73ef7d4a2473406d7f4c750884be8e8620b0ce70f4dae -md5: 30cd29cb87d819caead4d55184c1d115 +- conda: https://conda.anaconda.org/conda-forge/noarch/zipp-4.1.0-pyhcf101f3_0.conda +sha256: 210bd31c22bb88f5e2a167df24c95bb5f152b2ada7502f9b8c49d1f5366db423 +md5: ba3dcdc8584155c97c648ae9c044b7a3 depends: - python >=3.10 - python license: MIT license_family: MIT -size: 24194 -timestamp: 1764460141901 +size: 24190 +timestamp: 1779159948016 - conda: https://conda.anaconda.org/conda-forge/linux-64/zlib-ng-2.3.3-hceb46e0_1.conda sha256: ea4e50c465d70236408cb0bfe0115609fd14db1adcd8bd30d8918e0291f8a75f md5: 2aadb0d17215603a82a2a6b0afd9a4cb diff --git a/modules/nf-core/multiqc/.conda-lock/linux_arm64-bd-40bf3b435e89dc22_1.txt b/modules/nf-core/multiqc/.conda-lock/linux_arm64-bd-5c84a5000a226ab5_1.txt similarity index 74% rename from modules/nf-core/multiqc/.conda-lock/linux_arm64-bd-40bf3b435e89dc22_1.txt rename to modules/nf-core/multiqc/.conda-lock/linux_arm64-bd-5c84a5000a226ab5_1.txt index a58231a0..3d5b93db 100644 --- a/modules/nf-core/multiqc/.conda-lock/linux_arm64-bd-40bf3b435e89dc22_1.txt +++ b/modules/nf-core/multiqc/.conda-lock/linux_arm64-bd-5c84a5000a226ab5_1.txt @@ -14,120 +14,118 @@ linux-aarch64: - conda: https://conda.anaconda.org/conda-forge/noarch/_python_abi3_support-1.0-hd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-26.1.0-pyhcf101f3_0.conda -- conda: https://conda.anaconda.org/conda-forge/noarch/backports.zstd-1.3.0-py314h680f03e_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/backports.zstd-1.5.0-py314h680f03e_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/brotli-python-1.2.0-py314h352cb57_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/bzip2-1.0.8-h4777abc_9.conda -- conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2026.2.25-hbd8a1cb_0.conda -- conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2026.2.25-pyhd8ed1ab_0.conda -- conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.6-pyhd8ed1ab_0.conda -- conda: https://conda.anaconda.org/conda-forge/noarch/click-8.3.1-pyh8f84b5b_1.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2026.5.20-hbd8a1cb_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2026.5.20-pyhd8ed1ab_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.7-pyhd8ed1ab_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/click-8.4.0-pyhc90fa1f_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/coloredlogs-15.0.1-pyhd8ed1ab_4.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colormath-3.0.0-pyhd8ed1ab_4.conda -- conda: https://conda.anaconda.org/conda-forge/noarch/cpython-3.14.3-py314hd8ed1ab_101.conda -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/expat-2.7.4-hfae3067_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/cpython-3.14.5-py314hd8ed1ab_100.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/expat-2.8.1-hfae3067_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-dejavu-sans-mono-2.37-hab24e00_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-inconsolata-3.000-h77eed37_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-source-code-pro-2.038-h77eed37_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-ubuntu-0.83-h77eed37_3.conda -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/fontconfig-2.17.1-hba86a56_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/fontconfig-2.18.0-hba86a56_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-forge-1-hc364b38_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.3.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/humanfriendly-10.0-pyh707e725_8.conda - conda: https://conda.anaconda.org/conda-forge/noarch/humanize-4.15.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/icu-78.3-hcab7f73_0.conda -- conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.11-pyhd8ed1ab_0.conda -- conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.8.0-pyhcf101f3_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.15-pyhcf101f3_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-9.0.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.6-pyhcf101f3_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.26.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2025.9.1-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/kaleido-core-0.2.1-he5a581e_0.tar.bz2 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lcms2-2.18-h9d5b58d_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lcms2-2.19.1-h9d5b58d_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.45.1-default_h1979696_102.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lerc-4.1.0-h52b7260_0.conda -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.11.0-5_haddc8a3_openblas.conda -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcblas-3.11.0-5_hd72aa62_openblas.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.11.0-7_haddc8a3_openblas.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcblas-3.11.0-7_hd72aa62_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libdeflate-1.25-h1af38f5_0.conda -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libexpat-2.7.4-hfae3067_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libexpat-2.8.1-hfae3067_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libffi-3.5.2-h376a255_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libfreetype-2.14.3-h8af1aa0_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libfreetype6-2.14.3-hdae7a39_0.conda -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-15.2.0-h8acb6b2_18.conda -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-ng-15.2.0-he9431aa_18.conda -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran-15.2.0-he9431aa_18.conda -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran5-15.2.0-h1b7bec0_18.conda -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgomp-15.2.0-h8acb6b2_18.conda -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libjpeg-turbo-3.1.2-he30d5cf_0.conda -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.11.0-5_h88aeb00_openblas.conda -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-5.8.2-he30d5cf_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-15.2.0-h8acb6b2_19.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-ng-15.2.0-he9431aa_19.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran-15.2.0-he9431aa_19.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran5-15.2.0-h1b7bec0_19.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgomp-15.2.0-h8acb6b2_19.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libjpeg-turbo-3.1.4.1-he30d5cf_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.11.0-7_h88aeb00_openblas.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-5.8.3-he30d5cf_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libmpdec-4.0.0-he30d5cf_1.conda -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenblas-0.3.30-pthreads_h9d3fd7e_4.conda -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libpng-1.6.55-h1abf092_0.conda -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.52.0-h10b116e_0.conda -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-15.2.0-hef695bb_18.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenblas-0.3.33-pthreads_h9d3fd7e_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libpng-1.6.58-h1abf092_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.53.1-h022381a_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-15.2.0-hef695bb_19.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libtiff-4.7.1-hdb009f0_1.conda -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuuid-2.41.3-h1022ec0_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuuid-2.42.1-h1022ec0_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libwebp-base-1.6.0-ha2e29f5_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcb-1.17.0-h262b8f6_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.2-hdc9db2a_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-3.10.2-pyhcf101f3_0.conda -- conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-4.0.0-pyhd8ed1ab_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-4.2.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/markupsafe-3.0.3-py314hb76de3f_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/mathjax-2.7.7-h8af1aa0_3.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda -- conda: https://conda.anaconda.org/bioconda/noarch/multiqc-1.33-pyhdfd78af_0.conda -- conda: https://conda.anaconda.org/conda-forge/noarch/narwhals-2.18.1-pyhcf101f3_1.conda +- conda: https://conda.anaconda.org/bioconda/noarch/multiqc-1.35-pyhdfd78af_1.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/narwhals-2.21.2-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/natsort-8.4.0-pyhcf101f3_2.conda -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ncurses-6.5-ha32ae93_3.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ncurses-6.6-hf8d1292_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/networkx-3.6.1-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/nspr-4.38-h3ad9384_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/nss-3.118-h544fa81_0.conda -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/numpy-2.4.3-py314haac167e_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/numpy-2.4.6-py314he1698a1_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openjpeg-2.5.4-h5da879a_0.conda -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openssl-3.6.1-h546c87b_1.conda -- conda: https://conda.anaconda.org/conda-forge/noarch/packaging-26.0-pyhcf101f3_0.conda -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pillow-12.1.1-py314hac3e5ec_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openssl-3.6.2-h546c87b_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/packaging-26.2-pyhc364b38_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pillow-12.2.0-py314hac3e5ec_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/plotly-6.6.0-pyhd8ed1ab_0.conda -- conda: https://conda.anaconda.org/conda-forge/noarch/polars-1.39.3-pyh58ad624_1.conda -- conda: https://conda.anaconda.org/conda-forge/noarch/polars-lts-cpu-1.34.0.deprecated-hc364b38_0.conda -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/polars-runtime-32-1.39.3-py310hff09b76_1.conda -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/polars-runtime-compat-1.39.3-py310hf00a4a2_1.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/polars-1.41.0-pyh58ad624_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/polars-runtime-32-1.41.0-py310h32c7c23_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/polars-runtime-compat-1.41.0-py310hc0e61be_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/procps-ng-4.0.6-h1779866_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pthread-stubs-0.4-h86ecc28_1002.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pyaml-env-1.2.2-pyhd8ed1ab_0.conda -- conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.12.5-pyhcf101f3_1.conda -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pydantic-core-2.41.5-py314h451b6cc_1.conda -- conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.2-pyhd8ed1ab_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.13.4-pyhcf101f3_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pydantic-core-2.46.4-py314h451b6cc_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.20.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-3.14.3-hb06a95a_101_cp314.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-3.14.5-hfd9ac0a_100_cp314.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.2.2-pyhcf101f3_0.conda -- conda: https://conda.anaconda.org/conda-forge/noarch/python-gil-3.14.3-h4df99d1_101.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/python-gil-3.14.5-h4df99d1_100.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-kaleido-0.2.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.14-8_cp314.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyyaml-6.0.3-py314h807365f_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/readline-8.3-hb682ff5_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/referencing-0.37.0-pyhcf101f3_0.conda -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/regex-2026.2.28-py314h51f160d_0.conda -- conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.5-pyhcf101f3_1.conda -- conda: https://conda.anaconda.org/conda-forge/noarch/rich-14.3.3-pyhcf101f3_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/regex-2026.5.9-py314h51f160d_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.34.2-pyhcf101f3_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/rich-15.0.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rich-click-1.9.7-pyh8f84b5b_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/rpds-py-0.30.0-py314h02b7a91_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/spectra-0.0.11-pyhd8ed1ab_2.conda -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sqlite-3.52.0-hf1c7be2_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sqlite-3.53.1-he8854b5_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tiktoken-0.12.0-py314h6a36e60_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tk-8.6.13-noxft_h0dc03b3_103.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.3-pyh8f84b5b_0.conda -- conda: https://conda.anaconda.org/conda-forge/noarch/typeguard-4.5.1-pyhd8ed1ab_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/typeguard-4.5.2-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.15.0-h396c80c_0.conda -- conda: https://conda.anaconda.org/conda-forge/noarch/typing-inspection-0.4.2-pyhd8ed1ab_1.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/typing-inspection-0.4.2-pyhcf101f3_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.15.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025c-hc9c84f9_1.conda -- conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.6.3-pyhd8ed1ab_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.7.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxau-1.0.12-he30d5cf_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxdmcp-1.1.5-he30d5cf_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/yaml-0.2.5-h80f16a2_3.conda -- conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.23.0-pyhcf101f3_1.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/zipp-4.1.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zlib-ng-2.3.3-ha7cb516_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zstd-1.5.7-h85ac4a6_6.conda packages: @@ -173,15 +171,15 @@ license: MIT license_family: MIT size: 64927 timestamp: 1773935801332 -- conda: https://conda.anaconda.org/conda-forge/noarch/backports.zstd-1.3.0-py314h680f03e_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/backports.zstd-1.5.0-py314h680f03e_0.conda noarch: generic -sha256: c31ab719d256bc6f89926131e88ecd0f0c5d003fe8481852c6424f4ec6c7eb29 -md5: a2ac7763a9ac75055b68f325d3255265 +sha256: a1c97297e867776760489537bc5ae36fa83a154be30e3b79385a39ca4cb058fe +md5: 1133126d840e75287d83947be3fc3e71 depends: - python >=3.14 license: BSD-3-Clause AND MIT AND EPL-2.0 -size: 7514 -timestamp: 1767044983590 +size: 7533 +timestamp: 1778594057496 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/brotli-python-1.2.0-py314h352cb57_1.conda sha256: 5a5b0cdcd7ed89c6a8fb830924967f6314a2b71944bc1ebc2c105781ba97aa75 md5: a1b5c571a0923a205d663d8678df4792 @@ -206,42 +204,42 @@ license: bzip2-1.0.6 license_family: BSD size: 192412 timestamp: 1771350241232 -- conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2026.2.25-hbd8a1cb_0.conda -sha256: 67cc7101b36421c5913a1687ef1b99f85b5d6868da3abbf6ec1a4181e79782fc -md5: 4492fd26db29495f0ba23f146cd5638d +- conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2026.5.20-hbd8a1cb_0.conda +sha256: 9812a303a1395e1dafbd92e5bc8a1ff6013bcbba0a09c7f03a8d23e43560aa9b +md5: 489b8e97e666c93f68fdb35c3c9b957f depends: - __unix license: ISC -size: 147413 -timestamp: 1772006283803 -- conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2026.2.25-pyhd8ed1ab_0.conda -sha256: a6b118fd1ed6099dc4fc03f9c492b88882a780fadaef4ed4f93dc70757713656 -md5: 765c4d97e877cdbbb88ff33152b86125 +size: 129868 +timestamp: 1779289852439 +- conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2026.5.20-pyhd8ed1ab_0.conda +sha256: 645655a3510e38e625da136595f3f16f2130c3263630cc3bc8f60f619ddbe490 +md5: 9fefff2f745ea1cc2ef15211a20c054a depends: - python >=3.10 license: ISC -size: 151445 -timestamp: 1772001170301 -- conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.6-pyhd8ed1ab_0.conda -sha256: d86dfd428b2e3c364fa90e07437c8405d635aa4ef54b25ab51d9c712be4112a5 -md5: 49ee13eb9b8f44d63879c69b8a40a74b +size: 134201 +timestamp: 1779285131141 +- conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.7-pyhd8ed1ab_0.conda +sha256: 3f9483d62ce24ecd063f8a5a714448445dc8d9e201147c46699fc0033e824457 +md5: a9167b9571f3baa9d448faa2139d1089 depends: - python >=3.10 license: MIT license_family: MIT -size: 58510 -timestamp: 1773660086450 -- conda: https://conda.anaconda.org/conda-forge/noarch/click-8.3.1-pyh8f84b5b_1.conda -sha256: 38cfe1ee75b21a8361c8824f5544c3866f303af1762693a178266d7f198e8715 -md5: ea8a6c3256897cc31263de9f455e25d9 +size: 58872 +timestamp: 1775127203018 +- conda: https://conda.anaconda.org/conda-forge/noarch/click-8.4.0-pyhc90fa1f_0.conda +sha256: 99ab8ef815c4520cce3a7482c2513f377c14348206857661d84c76a55e030f97 +md5: 003767c47f1f0a474c4de268b57839c3 depends: -- python >=3.10 - __unix - python +- python >=3.10 license: BSD-3-Clause license_family: BSD -size: 97676 -timestamp: 1764518652276 +size: 104631 +timestamp: 1779108494556 - conda: https://conda.anaconda.org/conda-forge/noarch/coloredlogs-15.0.1-pyhd8ed1ab_4.conda sha256: 8021c76eeadbdd5784b881b165242db9449783e12ce26d6234060026fd6a8680 md5: b866ff7007b934d564961066c8195983 @@ -263,26 +261,26 @@ license: BSD-3-Clause license_family: BSD size: 39326 timestamp: 1735759976140 -- conda: https://conda.anaconda.org/conda-forge/noarch/cpython-3.14.3-py314hd8ed1ab_101.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/cpython-3.14.5-py314hd8ed1ab_100.conda noarch: generic -sha256: 91b06300879df746214f7363d6c27c2489c80732e46a369eb2afc234bcafb44c -md5: 3bb89e4f795e5414addaa531d6b1500a +sha256: 777882d2685f368417f31bbe1b28f73687fc6c8f6a5768bda20ffeefa6b07f5b +md5: a749029ce5d0632a913db19d17f944ab depends: - python >=3.14,<3.15.0a0 - python_abi * *_cp314 license: Python-2.0 -size: 50078 -timestamp: 1770674447292 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/expat-2.7.4-hfae3067_0.conda -sha256: 5f087bef054c681edcaae84a8c2230585b938691e371ff92957a30707b7fcdf7 -md5: b304307db639831ad7caabd2eac6fca6 +size: 50212 +timestamp: 1779236682725 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/expat-2.8.1-hfae3067_0.conda +sha256: a9cd5eb1700e11cc39acc36630a2d72a4e317943bd7c5695cd8804419f04ff42 +md5: 89f0247b3cea528d8ad1a6664a313153 depends: -- libexpat 2.7.4 hfae3067_0 +- libexpat 2.8.1 hfae3067_0 - libgcc >=14 license: MIT license_family: MIT -size: 137701 -timestamp: 1771259543650 +size: 140114 +timestamp: 1779278679081 - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-dejavu-sans-mono-2.37-hab24e00_0.tar.bz2 sha256: 58d7f40d2940dd0a8aa28651239adbf5613254df0f75789919c4e6762054403b md5: 0c96522c6bdaed4b1566d11387caaf45 @@ -311,20 +309,20 @@ license: LicenseRef-Ubuntu-Font-Licence-Version-1.0 license_family: Other size: 1620504 timestamp: 1727511233259 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/fontconfig-2.17.1-hba86a56_0.conda -sha256: 835aff8615dd8d8fff377679710ce81b8a2c47b6404e21a92fb349fda193a15c -md5: 0fed1ff55f4938a65907f3ecf62609db +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/fontconfig-2.18.0-hba86a56_0.conda +sha256: 1805f4ab3d9e1734a5a17abccc2cb0fdade51d4d5f29bdc410600ea0115ec050 +md5: b660d59a9d0fb3297327418624acaec3 depends: -- libexpat >=2.7.4,<3.0a0 -- libfreetype >=2.14.1 -- libfreetype6 >=2.14.1 +- libexpat >=2.8.1,<3.0a0 +- libfreetype >=2.14.3 +- libfreetype6 >=2.14.3 - libgcc >=14 -- libuuid >=2.41.3,<3.0a0 -- libzlib >=1.3.1,<2.0a0 +- libuuid >=2.42.1,<3.0a0 +- libzlib >=1.3.2,<2.0a0 license: MIT license_family: MIT -size: 279044 -timestamp: 1771382728182 +size: 293348 +timestamp: 1779421661332 - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-forge-1-hc364b38_1.conda sha256: 54eea8469786bc2291cc40bca5f46438d3e062a399e8f53f013b6a9f50e98333 md5: a7970cd949a077b7cb9696379d338681 @@ -386,36 +384,26 @@ license: MIT license_family: MIT size: 17397 timestamp: 1737618427549 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/icu-78.3-hcab7f73_0.conda -sha256: 49ba6aed2c6b482bb0ba41078057555d29764299bc947b990708617712ef6406 -md5: 546da38c2fa9efacf203e2ad3f987c59 -depends: -- libgcc >=14 -- libstdcxx >=14 -license: MIT -license_family: MIT -size: 12837286 -timestamp: 1773822650615 -- conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.11-pyhd8ed1ab_0.conda -sha256: ae89d0299ada2a3162c2614a9d26557a92aa6a77120ce142f8e0109bbf0342b0 -md5: 53abe63df7e10a6ba605dc5f9f961d36 +- conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.15-pyhcf101f3_0.conda +sha256: 3d25f9f6f7ab3e1ce6429fc8c8aae0335cf446692e715068488536d220cc43de +md5: 1b9083b7f00609605d1483dbc6071a81 depends: - python >=3.10 +- python license: BSD-3-Clause license_family: BSD -size: 50721 -timestamp: 1760286526795 -- conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.8.0-pyhcf101f3_0.conda -sha256: 82ab2a0d91ca1e7e63ab6a4939356667ef683905dea631bc2121aa534d347b16 -md5: 080594bf4493e6bae2607e65390c520a +size: 62642 +timestamp: 1779294335905 +- conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-9.0.0-pyhcf101f3_0.conda +sha256: 43e2a5497cad1598ff88a3e69f69bc88b7b8f141fa63c60eab5db296317318b8 +md5: ffc17e785d64e12fc311af9184221839 depends: - python >=3.10 - zipp >=3.20 - python license: Apache-2.0 -license_family: APACHE -size: 34387 -timestamp: 1773931568510 +size: 34766 +timestamp: 1779714582554 - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.6-pyhcf101f3_1.conda sha256: fc9ca7348a4f25fed2079f2153ecdcf5f9cf2a0bc36c4172420ca09e1849df7b md5: 04558c96691bed63104678757beb4f8d @@ -469,17 +457,17 @@ license: MIT license_family: MIT size: 65750397 timestamp: 1615199465742 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lcms2-2.18-h9d5b58d_0.conda -sha256: 379ef5e91a587137391a6149755d0e929f1a007d2dcb211318ac670a46c8596f -md5: bb960f01525b5e001608afef9d47b79c +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lcms2-2.19.1-h9d5b58d_0.conda +sha256: 1e5f68e4b36a0e1a278c6dc026bc3d7775518a15832cbc9d7fc1c0e4c47784b1 +md5: b1f8bee3c53a6d2c103fb4a1ae44f5c4 depends: - libgcc >=14 -- libjpeg-turbo >=3.1.2,<4.0a0 +- libjpeg-turbo >=3.1.4.1,<4.0a0 - libtiff >=4.7.1,<4.8.0a0 license: MIT license_family: MIT -size: 293039 -timestamp: 1768184778398 +size: 296899 +timestamp: 1778079402392 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.45.1-default_h1979696_102.conda sha256: 7abd913d81a9bf00abb699e8987966baa2065f5132e37e815f92d90fc6bba530 md5: a21644fc4a83da26452a718dc9468d5f @@ -501,37 +489,37 @@ license: Apache-2.0 license_family: Apache size: 240444 timestamp: 1773114901155 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.11.0-5_haddc8a3_openblas.conda -build_number: 5 -sha256: 700f3c03d0fba8e687a345404a45fbabe781c1cf92242382f62cef2948745ec4 -md5: 5afcea37a46f76ec1322943b3c4dfdc0 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.11.0-7_haddc8a3_openblas.conda +build_number: 7 +sha256: f27ba323c2f1e1731b5e880fe520f178f55047f25be94f77e649605b2343c066 +md5: e8d07b777f6ff1fab69665336561910b depends: -- libopenblas >=0.3.30,<0.3.31.0a0 -- libopenblas >=0.3.30,<1.0a0 +- libopenblas >=0.3.33,<0.3.34.0a0 +- libopenblas >=0.3.33,<1.0a0 constrains: -- mkl <2026 -- libcblas 3.11.0 5*_openblas -- liblapack 3.11.0 5*_openblas -- liblapacke 3.11.0 5*_openblas -- blas 2.305 openblas +- liblapack 3.11.0 7*_openblas +- libcblas 3.11.0 7*_openblas +- mkl <2027 +- blas 2.307 openblas +- liblapacke 3.11.0 7*_openblas license: BSD-3-Clause license_family: BSD -size: 18369 -timestamp: 1765818610617 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcblas-3.11.0-5_hd72aa62_openblas.conda -build_number: 5 -sha256: 3fad5c9de161dccb4e42c8b1ae8eccb33f4ed56bccbcced9cbb0956ae7869e61 -md5: 0b2f1143ae2d0aa4c991959d0daaf256 -depends: -- libblas 3.11.0 5_haddc8a3_openblas +size: 18696 +timestamp: 1778489796402 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcblas-3.11.0-7_hd72aa62_openblas.conda +build_number: 7 +sha256: c8f0192362966df0828419f042d6f94c079e5df00ad6bd05b5e84c12b42f8cc7 +md5: 90ac57b82c055faa9be25031864b7d8f +depends: +- libblas 3.11.0 7_haddc8a3_openblas constrains: -- liblapack 3.11.0 5*_openblas -- liblapacke 3.11.0 5*_openblas -- blas 2.305 openblas +- liblapack 3.11.0 7*_openblas +- blas 2.307 openblas +- liblapacke 3.11.0 7*_openblas license: BSD-3-Clause license_family: BSD -size: 18371 -timestamp: 1765818618899 +size: 18664 +timestamp: 1778489802790 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libdeflate-1.25-h1af38f5_0.conda sha256: 48814b73bd462da6eed2e697e30c060ae16af21e9fbed30d64feaf0aad9da392 md5: a9138815598fe6b91a1d6782ca657b0c @@ -541,17 +529,17 @@ license: MIT license_family: MIT size: 71117 timestamp: 1761979776756 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libexpat-2.7.4-hfae3067_0.conda -sha256: 995ce3ad96d0f4b5ed6296b051a0d7b6377718f325bc0e792fbb96b0e369dad7 -md5: 57f3b3da02a50a1be2a6fe847515417d +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libexpat-2.8.1-hfae3067_0.conda +sha256: 1fc392b997c6ee2bd3226a7cd870d0edbcbb367e25f9f18dd4a7025fced6efc0 +md5: 513dd884361dfb8a554298ed69b58823 depends: - libgcc >=14 constrains: -- expat 2.7.4.* +- expat 2.8.1.* license: MIT license_family: MIT -size: 76564 -timestamp: 1771259530958 +size: 77140 +timestamp: 1779278671302 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libffi-3.5.2-h376a255_0.conda sha256: 3df4c539449aabc3443bbe8c492c01d401eea894603087fca2917aa4e1c2dea9 md5: 2f364feefb6a7c00423e80dcb12db62a @@ -581,90 +569,90 @@ constrains: license: GPL-2.0-only OR FTL size: 422941 timestamp: 1774301093473 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-15.2.0-h8acb6b2_18.conda -sha256: 43df385bedc1cab11993c4369e1f3b04b4ca5d0ea16cba6a0e7f18dbc129fcc9 -md5: 552567ea2b61e3a3035759b2fdb3f9a6 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-15.2.0-h8acb6b2_19.conda +sha256: 4592b096e553f67799ae70d4b6167eeda3ec74587d68c7aecbf4e7b1df136681 +md5: f35b3f52d0a2ec4ffe3c89ba135cdb9a depends: - _openmp_mutex >=4.5 constrains: -- libgcc-ng ==15.2.0=*_18 -- libgomp 15.2.0 h8acb6b2_18 +- libgomp 15.2.0 h8acb6b2_19 +- libgcc-ng ==15.2.0=*_19 license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL -size: 622900 -timestamp: 1771378128706 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-ng-15.2.0-he9431aa_18.conda -sha256: 83bb0415f59634dccfa8335d4163d1f6db00a27b36666736f9842b650b92cf2f -md5: 4feebd0fbf61075a1a9c2e9b3936c257 +size: 622462 +timestamp: 1778268755949 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-ng-15.2.0-he9431aa_19.conda +sha256: 1137f93f477f56199ded24117430045a0c02cbe8b10031beac3b9ad2138539d3 +md5: 770cf892e5530f43e63cadc673e85653 depends: -- libgcc 15.2.0 h8acb6b2_18 +- libgcc 15.2.0 h8acb6b2_19 license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL -size: 27568 -timestamp: 1771378136019 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran-15.2.0-he9431aa_18.conda -sha256: 7dcd7dff2505d56fd5272a6e712ec912f50a46bf07dc6873a7e853694304e6e4 -md5: 41f261f5e4e2e8cbd236c2f1f15dae1b +size: 27738 +timestamp: 1778268759211 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran-15.2.0-he9431aa_19.conda +sha256: e5ad94be72634233510b33ba792a3339921bd468f0b8bc6961ea05eded251d9b +md5: c7a5b5decf969ead5ecada83654164cf depends: -- libgfortran5 15.2.0 h1b7bec0_18 +- libgfortran5 15.2.0 h1b7bec0_19 constrains: -- libgfortran-ng ==15.2.0=*_18 +- libgfortran-ng ==15.2.0=*_19 license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL -size: 27587 -timestamp: 1771378169244 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran5-15.2.0-h1b7bec0_18.conda -sha256: 85347670dfb4a8d4c13cd7cae54138dcf2b1606b6bede42eef5507bf5f9660c6 -md5: 574d88ce3348331e962cfa5ed451b247 +size: 27728 +timestamp: 1778268784621 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran5-15.2.0-h1b7bec0_19.conda +sha256: af8e9bdcaa77f133a8ee4c1ef57ef564d9c45aa262abf9f5ef9b50eb99d96407 +md5: 779dbb494de6d3d6477cab52eb34285a depends: - libgcc >=15.2.0 constrains: - libgfortran 15.2.0 license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL -size: 1486341 -timestamp: 1771378148102 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgomp-15.2.0-h8acb6b2_18.conda -sha256: fc716f11a6a8525e27a5d332ef6a689210b0d2a4dd1133edc0f530659aa9faa6 -md5: 4faa39bf919939602e594253bd673958 +size: 1487244 +timestamp: 1778268767295 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgomp-15.2.0-h8acb6b2_19.conda +sha256: 2370ef0ffcbae5bede3c4bf136add4abc257245eb91f724c99bb4a43116c5a83 +md5: c5e8a379c4a2ec2aea4ba22758c001d9 license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL -size: 588060 -timestamp: 1771378040807 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libjpeg-turbo-3.1.2-he30d5cf_0.conda -sha256: 84064c7c53a64291a585d7215fe95ec42df74203a5bf7615d33d49a3b0f08bb6 -md5: 5109d7f837a3dfdf5c60f60e311b041f +size: 587387 +timestamp: 1778268674393 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libjpeg-turbo-3.1.4.1-he30d5cf_0.conda +sha256: e97ec2af5f09f8f6ea8ecd550055c95ae80fae22015fcfadaa94eafe025c9ccc +md5: a85ba48648f6868016f2741fd9170250 depends: - libgcc >=14 constrains: - jpeg <0.0.0a license: IJG AND BSD-3-Clause AND Zlib -size: 691818 -timestamp: 1762094728337 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.11.0-5_h88aeb00_openblas.conda -build_number: 5 -sha256: 692222d186d3ffbc99eaf04b5b20181fd26aee1edec1106435a0a755c57cce86 -md5: 88d1e4133d1182522b403e9ba7435f04 -depends: -- libblas 3.11.0 5_haddc8a3_openblas +size: 693143 +timestamp: 1775962625956 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.11.0-7_h88aeb00_openblas.conda +build_number: 7 +sha256: 20b38a0156200ac65f597bf0a93914c565435f2cc58b1042581854231a99ac35 +md5: 5899cbd743cc74fd655c1ed2af7120f3 +depends: +- libblas 3.11.0 7_haddc8a3_openblas constrains: -- liblapacke 3.11.0 5*_openblas -- blas 2.305 openblas -- libcblas 3.11.0 5*_openblas +- libcblas 3.11.0 7*_openblas +- blas 2.307 openblas +- liblapacke 3.11.0 7*_openblas license: BSD-3-Clause license_family: BSD -size: 18392 -timestamp: 1765818627104 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-5.8.2-he30d5cf_0.conda -sha256: 843c46e20519651a3e357a8928352b16c5b94f4cd3d5481acc48be2e93e8f6a3 -md5: 96944e3c92386a12755b94619bae0b35 +size: 18685 +timestamp: 1778489809140 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-5.8.3-he30d5cf_0.conda +sha256: d61962b9cd54c3554361550203c64d5b65b71e3058a285b66e4b04b9769f0a5c +md5: 76298a9e6d71ee6e832a8d0d7373b261 depends: - libgcc >=14 constrains: -- xz 5.8.2.* +- xz 5.8.3.* license: 0BSD -size: 125916 -timestamp: 1768754941722 +size: 126102 +timestamp: 1775828008518 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libmpdec-4.0.0-he30d5cf_1.conda sha256: 57c0dd12d506e84541c4e877898bd2a59cca141df493d34036f18b2751e0a453 md5: 7b9813e885482e3ccb1fa212b86d7fd0 @@ -674,49 +662,48 @@ license: BSD-2-Clause license_family: BSD size: 114056 timestamp: 1769482343003 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenblas-0.3.30-pthreads_h9d3fd7e_4.conda -sha256: 794a7270ea049ec931537874cd8d2de0ef4b3cef71c055cfd8b4be6d2f4228b0 -md5: 11d7d57b7bdd01da745bbf2b67020b2e +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenblas-0.3.33-pthreads_h9d3fd7e_0.conda +sha256: b018ecfb05e75a8eea3f21f6b5c5c2a54b5178bdcf19e2e2df2735740214a8c8 +md5: 58a66cd95e9692f08abe89f55a6f3f12 depends: - libgcc >=14 - libgfortran - libgfortran5 >=14.3.0 constrains: -- openblas >=0.3.30,<0.3.31.0a0 +- openblas >=0.3.33,<0.3.34.0a0 license: BSD-3-Clause license_family: BSD -size: 4959359 -timestamp: 1763114173544 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libpng-1.6.55-h1abf092_0.conda -sha256: c7378c6b79de4d571d00ad1caf0a4c19d43c9c94077a761abb6ead44d891f907 -md5: be4088903b94ea297975689b3c3aeb27 +size: 5121336 +timestamp: 1776993423004 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libpng-1.6.58-h1abf092_0.conda +sha256: 483eaa53da40a6a3e558709d9f7b1ca388735364ae21a1ba58cf942514649c92 +md5: f51503ac45a4888bce71af9027a2ecc9 depends: - libgcc >=14 -- libzlib >=1.3.1,<2.0a0 +- libzlib >=1.3.2,<2.0a0 license: zlib-acknowledgement -size: 340156 -timestamp: 1770691477245 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.52.0-h10b116e_0.conda -sha256: 1ddaf91b44fae83856276f4cb7ce544ffe41d4b55c1e346b504c6b45f19098d6 -md5: 77891484f18eca74b8ad83694da9815e +size: 341202 +timestamp: 1776315188425 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.53.1-h022381a_0.conda +sha256: ad03b7d8e4d08001f0df88ee7a56108bb35bae4795a42b9a04cc1abfa822bd07 +md5: 2ec1119217d8f0d086e9a62f3cb0e5ea depends: -- icu >=78.2,<79.0a0 - libgcc >=14 -- libzlib >=1.3.1,<2.0a0 +- libzlib >=1.3.2,<2.0a0 license: blessing -size: 952296 -timestamp: 1772818881550 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-15.2.0-hef695bb_18.conda -sha256: 31fdb9ffafad106a213192d8319b9f810e05abca9c5436b60e507afb35a6bc40 -md5: f56573d05e3b735cb03efeb64a15f388 +size: 955361 +timestamp: 1777986487553 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-15.2.0-hef695bb_19.conda +sha256: 1dadc45e599f510dd5f97141dddcdbb9844d9f1430c1f3a38075cf1c58f87b4e +md5: 543fbc8d71f2a0baf04cf88ce96cb8bb depends: -- libgcc 15.2.0 h8acb6b2_18 +- libgcc 15.2.0 h8acb6b2_19 constrains: -- libstdcxx-ng ==15.2.0=*_18 +- libstdcxx-ng ==15.2.0=*_19 license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL -size: 5541411 -timestamp: 1771378162499 +size: 5546559 +timestamp: 1778268777463 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libtiff-4.7.1-hdb009f0_1.conda sha256: 7ff79470db39e803e21b8185bc8f19c460666d5557b1378d1b1e857d929c6b39 md5: 8c6fd84f9c87ac00636007c6131e457d @@ -733,15 +720,15 @@ depends: license: HPND size: 488407 timestamp: 1762022048105 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuuid-2.41.3-h1022ec0_0.conda -sha256: c37a8e89b700646f3252608f8368e7eb8e2a44886b92776e57ad7601fc402a11 -md5: cf2861212053d05f27ec49c3784ff8bb +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuuid-2.42.1-h1022ec0_0.conda +sha256: 1628839b062e98b2192857d4da8496ac9ac6b0dbb77aa040c34efc9192c440ee +md5: 0f42f9fedd2a32d798de95a7f65c456f depends: - libgcc >=14 license: BSD-3-Clause license_family: BSD size: 43453 -timestamp: 1766271546875 +timestamp: 1779118526838 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libwebp-base-1.6.0-ha2e29f5_0.conda sha256: b03700a1f741554e8e5712f9b06dd67e76f5301292958cd3cb1ac8c6fdd9ed25 md5: 24e92d0942c799db387f5c9d7b81f1af @@ -785,16 +772,16 @@ license: BSD-3-Clause license_family: BSD size: 85893 timestamp: 1770694658918 -- conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-4.0.0-pyhd8ed1ab_0.conda -sha256: 7b1da4b5c40385791dbc3cc85ceea9fad5da680a27d5d3cb8bfaa185e304a89e -md5: 5b5203189eb668f042ac2b0826244964 +- conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-4.2.0-pyhd8ed1ab_0.conda +sha256: 0c4c35376fe920714390d46e4b8d31c876d65f18e1655899e0763ec25f2a902f +md5: 6d03368f2b2b0a5fb6839df53b2eb5e0 depends: - mdurl >=0.1,<1 - python >=3.10 license: MIT license_family: MIT -size: 64736 -timestamp: 1754951288511 +size: 69017 +timestamp: 1778169663339 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/markupsafe-3.0.3-py314hb76de3f_1.conda sha256: 383c188496d13a55658c06e61e7d4cdff2c9f9d5a0648769fca8250bece7e0ef md5: e5de3c36dd548b35ff2a8aa49208dcb3 @@ -824,9 +811,9 @@ license: MIT license_family: MIT size: 14465 timestamp: 1733255681319 -- conda: https://conda.anaconda.org/bioconda/noarch/multiqc-1.33-pyhdfd78af_0.conda -sha256: f005760b13093362fc9c997d603dd487de32ab2e821a3cbce52a42bcb8136517 -md5: 698a8a27c2b9d8a542c70cb47099a75e +- conda: https://conda.anaconda.org/bioconda/noarch/multiqc-1.35-pyhdfd78af_1.conda +sha256: e86033aa55a9e915e2d0957e770bdb81e3feb26a227d1adb17f9d6c528da6a71 +md5: cdb20309681ba3ce8f52c110e214d4f3 depends: - click - coloredlogs @@ -840,10 +827,11 @@ depends: - packaging - pillow >=10.2.0 - plotly >=5.18 -- polars-lts-cpu +- polars >=1.34.0 +- polars-runtime-compat >=1.34.0 - pyaml-env - pydantic >=2.7.1 -- python >=3.8,!=3.14.1 +- python >=3.9,!=3.14.1 - python-dotenv - python-kaleido 0.2.1 - pyyaml >=4 @@ -853,20 +841,21 @@ depends: - spectra >=0.0.10 - tiktoken - tqdm -- typeguard +- typeguard >=4 license: GPL-3.0-or-later license_family: GPL3 -size: 4198799 -timestamp: 1765300743879 -- conda: https://conda.anaconda.org/conda-forge/noarch/narwhals-2.18.1-pyhcf101f3_1.conda -sha256: 541fd4390a0687228b8578247f1536a821d9261389a65585af9d1a6f2a14e1e0 -md5: 30bec5e8f4c3969e2b1bd407c5e52afb +size: 4282188 +timestamp: 1779465338806 +- conda: https://conda.anaconda.org/conda-forge/noarch/narwhals-2.21.2-pyhcf101f3_0.conda +sha256: 70f43d62450927d51673eecd8823e14f5b3cfebdb43cda1d502eba97162bab42 +md5: 6687827c332121727ce383919e1ec8c2 depends: - python >=3.10 - python license: MIT -size: 280459 -timestamp: 1774380620329 +license_family: MIT +size: 284323 +timestamp: 1778929680962 - conda: https://conda.anaconda.org/conda-forge/noarch/natsort-8.4.0-pyhcf101f3_2.conda sha256: aeb1548eb72e4f198e72f19d242fb695b35add2ac7b2c00e0d83687052867680 md5: e941e85e273121222580723010bd4fa2 @@ -877,14 +866,14 @@ license: MIT license_family: MIT size: 39262 timestamp: 1770905275632 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ncurses-6.5-ha32ae93_3.conda -sha256: 91cfb655a68b0353b2833521dc919188db3d8a7f4c64bea2c6a7557b24747468 -md5: 182afabe009dc78d8b73100255ee6868 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ncurses-6.6-hf8d1292_0.conda +sha256: 369db85c5cd8d99dde364ce70725d76511d9c8199e5b820c740414091bf5bcca +md5: b2a43456aa56fe80c2477a5094899eff depends: -- libgcc >=13 +- libgcc >=14 license: X11 AND BSD-3-Clause -size: 926034 -timestamp: 1738196018799 +size: 960036 +timestamp: 1777422174534 - conda: https://conda.anaconda.org/conda-forge/noarch/networkx-3.6.1-pyhcf101f3_0.conda sha256: f6a82172afc50e54741f6f84527ef10424326611503c64e359e25a19a8e4c1c6 md5: a2c1eeadae7a309daed9d62c96012a2b @@ -923,24 +912,23 @@ license: MPL-2.0 license_family: MOZILLA size: 2061869 timestamp: 1763490303490 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/numpy-2.4.3-py314haac167e_0.conda -sha256: a6d42fd88afc57c3b0a57b21a12eff7492dfc419bb61ee3f74e9ba6261dabc88 -md5: 25d896c331481145720a21e5145fad65 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/numpy-2.4.6-py314he1698a1_0.conda +sha256: 04af718b911f8a3a0095481c7e283aa081a175fe626eccbc2c5644bcb2aba9a1 +md5: 8b173772deea177b45d2a133b509b3f7 depends: - python -- libgcc >=14 -- python 3.14.* *_cp314 - libstdcxx >=14 -- libcblas >=3.9.0,<4.0a0 -- liblapack >=3.9.0,<4.0a0 +- libgcc >=14 - python_abi 3.14.* *_cp314 - libblas >=3.9.0,<4.0a0 +- liblapack >=3.9.0,<4.0a0 +- libcblas >=3.9.0,<4.0a0 constrains: - numpy-base <0a0 license: BSD-3-Clause license_family: BSD -size: 8008045 -timestamp: 1773839355275 +size: 8002900 +timestamp: 1779169206742 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openjpeg-2.5.4-h5da879a_0.conda sha256: bd1bc8bdde5e6c5cbac42d462b939694e40b59be6d0698f668515908640c77b8 md5: cea962410e327262346d48d01f05936c @@ -954,47 +942,47 @@ license: BSD-2-Clause license_family: BSD size: 392636 timestamp: 1758489353577 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openssl-3.6.1-h546c87b_1.conda -sha256: 7f8048c0e75b2620254218d72b4ae7f14136f1981c5eb555ef61645a9344505f -md5: 25f5885f11e8b1f075bccf4a2da91c60 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openssl-3.6.2-h546c87b_0.conda +sha256: 348cb74c1530ac241215d047ef65d134cf797af935c97a68655319362b7e6a01 +md5: 3b129669089e4d6a5c6871dbb4669b99 depends: - ca-certificates - libgcc >=14 license: Apache-2.0 license_family: Apache -size: 3692030 -timestamp: 1769557678657 -- conda: https://conda.anaconda.org/conda-forge/noarch/packaging-26.0-pyhcf101f3_0.conda -sha256: c1fc0f953048f743385d31c468b4a678b3ad20caffdeaa94bed85ba63049fd58 -md5: b76541e68fea4d511b1ac46a28dcd2c6 +size: 3706406 +timestamp: 1775589602258 +- conda: https://conda.anaconda.org/conda-forge/noarch/packaging-26.2-pyhc364b38_0.conda +sha256: 3906abfb6511a3bb309e39b9b1b7bc38f50a723971de2395489fd1f379255890 +md5: 4c06a92e74452cfa53623a81592e8934 depends: - python >=3.8 - python license: Apache-2.0 license_family: APACHE -size: 72010 -timestamp: 1769093650580 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pillow-12.1.1-py314hac3e5ec_0.conda -sha256: 1ca2d1616baad9bccb7ebc425ef2dcd6cebe742fbe91edf226fb606ad371ca0f -md5: d3c959c7efe560b2d7da459d69121fe9 +size: 91574 +timestamp: 1777103621679 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pillow-12.2.0-py314hac3e5ec_0.conda +sha256: 96b26c2657275ffe84ab510edf0865e21999d791485d12794edd4a71b837beb6 +md5: 87d58d103b47c4a8567b3d7666647684 depends: - python -- python 3.14.* *_cp314 - libgcc >=14 -- zlib-ng >=2.3.3,<2.4.0a0 +- python 3.14.* *_cp314 +- openjpeg >=2.5.4,<3.0a0 +- libxcb >=1.17.0,<2.0a0 - libwebp-base >=1.6.0,<2.0a0 +- zlib-ng >=2.3.3,<2.4.0a0 +- python_abi 3.14.* *_cp314 +- lcms2 >=2.18,<3.0a0 - tk >=8.6.13,<8.7.0a0 -- libfreetype >=2.14.1 -- libfreetype6 >=2.14.1 - libtiff >=4.7.1,<4.8.0a0 -- lcms2 >=2.18,<3.0a0 -- python_abi 3.14.* *_cp314 -- openjpeg >=2.5.4,<3.0a0 - libjpeg-turbo >=3.1.2,<4.0a0 -- libxcb >=1.17.0,<2.0a0 +- libfreetype >=2.14.3 +- libfreetype6 >=2.14.3 license: HPND -size: 1051828 -timestamp: 1770794010335 +size: 1062080 +timestamp: 1775060067775 - conda: https://conda.anaconda.org/conda-forge/noarch/plotly-6.6.0-pyhd8ed1ab_0.conda sha256: c418d325359fc7a0074cea7f081ef1bce26e114d2da8a0154c5d27ecc87a08e7 md5: 3e9427ee186846052e81fadde8ebe96a @@ -1008,11 +996,11 @@ license: MIT license_family: MIT size: 5251872 timestamp: 1772628857717 -- conda: https://conda.anaconda.org/conda-forge/noarch/polars-1.39.3-pyh58ad624_1.conda -sha256: d332c2d5002fc440ae37ed9679ffc21b552f18d20232390005d1dd3bce0888d3 -md5: d5a4e013a30dd8dfde9ab39f45aaf9c1 +- conda: https://conda.anaconda.org/conda-forge/noarch/polars-1.41.0-pyh58ad624_0.conda +sha256: 70fc56877c4a095ee658d61924d8019768fbae4a48437058d181fc94b0a7c4d8 +md5: 25a883fed9f1f3f21ff317a3e7c92ac4 depends: -- polars-runtime-32 ==1.39.3 +- polars-runtime-32 ==1.41.0 - python >=3.10 - python constrains: @@ -1026,27 +1014,16 @@ constrains: - pyiceberg >=0.7.1 - altair >=5.4.0 - great_tables >=0.8.0 -- polars-runtime-32 ==1.39.3 -- polars-runtime-64 ==1.39.3 -- polars-runtime-compat ==1.39.3 +- polars-runtime-32 ==1.41.0 +- polars-runtime-64 ==1.41.0 +- polars-runtime-compat ==1.41.0 license: MIT -license_family: MIT -size: 533495 -timestamp: 1774207987966 -- conda: https://conda.anaconda.org/conda-forge/noarch/polars-lts-cpu-1.34.0.deprecated-hc364b38_0.conda -sha256: e466fb31f67ba9bde18deafeb34263ca5eb25807f39ead0e9d753a8e82c4c4f4 -md5: ef0340e75068ac8ff96462749b5c98e7 -depends: -- polars >=1.34.0 -- polars-runtime-compat >=1.34.0 -license: MIT -license_family: MIT -size: 3902 -timestamp: 1760206808444 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/polars-runtime-32-1.39.3-py310hff09b76_1.conda +size: 539656 +timestamp: 1779630790562 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/polars-runtime-32-1.41.0-py310h32c7c23_0.conda noarch: python -sha256: c070be507c5a90df397a47ae0299660be437d5546d68f1bc0fa4402c9f07d59e -md5: 3c1a7c6b4ba8b9fb773ace9723f8a5db +sha256: d903b774ec09189e164207328aac157eee82fed8cc5c9ace46aeb5d1c15cb5b3 +md5: 8c08c506ed1ea8ce0ca37af5e918c58d depends: - python - libgcc >=14 @@ -1056,25 +1033,23 @@ depends: constrains: - __glibc >=2.17 license: MIT -license_family: MIT -size: 34785466 -timestamp: 1774207998285 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/polars-runtime-compat-1.39.3-py310hf00a4a2_1.conda +size: 38704429 +timestamp: 1779630794932 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/polars-runtime-compat-1.41.0-py310hc0e61be_0.conda noarch: python -sha256: 683315f1a49e47ce72bf9462419733b40b588b2b3106552d95fd4cd994e174de -md5: dd3464e2132dc3a783e76e5078870c76 +sha256: 101696adff43a654146376c62ef9611bf7946b95fa46f604fe247d77eefc6267 +md5: 65b73e4260677ee5162bdbb252e28e06 depends: - python -- libgcc >=14 - libstdcxx >=14 +- libgcc >=14 - _python_abi3_support 1.* - cpython >=3.10 constrains: - __glibc >=2.17 license: MIT -license_family: MIT -size: 34652491 -timestamp: 1774207996879 +size: 38651498 +timestamp: 1779630714016 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/procps-ng-4.0.6-h1779866_0.conda sha256: e9cbcbc94e151ada3d6dc365380aaaf591f65012c16d9a2abaea4b9b90adc402 md5: ab7288cc39545556d1bc5e71ab2df9a9 @@ -1104,24 +1079,23 @@ license: MIT license_family: MIT size: 14645 timestamp: 1736766960536 -- conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.12.5-pyhcf101f3_1.conda -sha256: 868569d9505b7fe246c880c11e2c44924d7613a8cdcc1f6ef85d5375e892f13d -md5: c3946ed24acdb28db1b5d63321dbca7d +- conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.13.4-pyhcf101f3_0.conda +sha256: 69700e31165df070e9716315e042196aa92525dae5deb5107785847ab9f4189f +md5: 729843edafc0899b3348bd3f19525b9d depends: - typing-inspection >=0.4.2 - typing_extensions >=4.14.1 - python >=3.10 -- typing-extensions >=4.6.1 - annotated-types >=0.6.0 -- pydantic-core ==2.41.5 +- pydantic-core ==2.46.4 - python license: MIT license_family: MIT -size: 340482 -timestamp: 1764434463101 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pydantic-core-2.41.5-py314h451b6cc_1.conda -sha256: f8acb2d03ebe80fed0032b9a989fc9acfb6735e3cd3f8c704b72728cb31868f6 -md5: 28f5027a1e04d67aa13fac1c5ba79693 +size: 346511 +timestamp: 1778103405862 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pydantic-core-2.46.4-py314h451b6cc_0.conda +sha256: 1a7c6b18e404c13c4d959888ecb48a9ed9de0e41be2872932b83a35278088df0 +md5: 9c3ace6aba6df14b943256095ac1281e depends: - python - typing-extensions >=4.6.0,!=4.7.0 @@ -1132,17 +1106,17 @@ constrains: - __glibc >=2.17 license: MIT license_family: MIT -size: 1828339 -timestamp: 1762989038561 -- conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.2-pyhd8ed1ab_0.conda -sha256: 5577623b9f6685ece2697c6eb7511b4c9ac5fb607c9babc2646c811b428fd46a -md5: 6b6ece66ebcae2d5f326c77ef2c5a066 +size: 1780773 +timestamp: 1778084251775 +- conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.20.0-pyhd8ed1ab_0.conda +sha256: cf70b2f5ad9ae472b71235e5c8a736c9316df3705746de419b59d442e8348e86 +md5: 16c18772b340887160c79a6acc022db0 depends: -- python >=3.9 +- python >=3.10 license: BSD-2-Clause license_family: BSD -size: 889287 -timestamp: 1750615908735 +size: 893031 +timestamp: 1774796815820 - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda sha256: ba3b032fa52709ce0d9fd388f63d330a026754587a2f461117cac9ab73d8d0d8 md5: 461219d1a5bd61342293efa2c0c90eac @@ -1153,31 +1127,31 @@ license: BSD-3-Clause license_family: BSD size: 21085 timestamp: 1733217331982 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-3.14.3-hb06a95a_101_cp314.conda -build_number: 101 -sha256: 87e9dff5646aba87cecfbc08789634c855871a7325169299d749040b0923a356 -md5: 205011b36899ff0edf41b3db0eda5a44 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-3.14.5-hfd9ac0a_100_cp314.conda +build_number: 100 +sha256: d37bad5447365346166c72950ea8f49689aa49cecc1b0623d00458427627b8df +md5: d956e09feb806f5974675ce92ad81d45 depends: - bzip2 >=1.0.8,<2.0a0 - ld_impl_linux-aarch64 >=2.36.1 -- libexpat >=2.7.3,<3.0a0 +- libexpat >=2.8.0,<3.0a0 - libffi >=3.5.2,<3.6.0a0 - libgcc >=14 -- liblzma >=5.8.2,<6.0a0 +- liblzma >=5.8.3,<6.0a0 - libmpdec >=4.0.0,<5.0a0 -- libsqlite >=3.51.2,<4.0a0 -- libuuid >=2.41.3,<3.0a0 -- libzlib >=1.3.1,<2.0a0 -- ncurses >=6.5,<7.0a0 -- openssl >=3.5.5,<4.0a0 +- libsqlite >=3.53.1,<4.0a0 +- libuuid >=2.42.1,<3.0a0 +- libzlib >=1.3.2,<2.0a0 +- ncurses >=6.6,<7.0a0 +- openssl >=3.5.6,<4.0a0 - python_abi 3.14.* *_cp314 - readline >=8.3,<9.0a0 - tk >=8.6.13,<8.7.0a0 - tzdata - zstd >=1.5.7,<1.6.0a0 license: Python-2.0 -size: 37305578 -timestamp: 1770674395875 +size: 37510439 +timestamp: 1779236267040 python_site_packages_path: lib/python3.14/site-packages - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.2.2-pyhcf101f3_0.conda sha256: 74e417a768f59f02a242c25e7db0aa796627b5bc8c818863b57786072aeb85e5 @@ -1188,15 +1162,15 @@ license: BSD-3-Clause license_family: BSD size: 27848 timestamp: 1772388605021 -- conda: https://conda.anaconda.org/conda-forge/noarch/python-gil-3.14.3-h4df99d1_101.conda -sha256: 233aebd94c704ac112afefbb29cf4170b7bc606e22958906f2672081bc50638a -md5: 235765e4ea0d0301c75965985163b5a1 +- conda: https://conda.anaconda.org/conda-forge/noarch/python-gil-3.14.5-h4df99d1_100.conda +sha256: 41dd7da285d71d519257fa7dacb1cae060d5ebfaa5f92cba5994899d2978e943 +md5: 41954747ba952ec4b01e16c2c9e8d8ff depends: -- cpython 3.14.3.* +- cpython 3.14.5.* - python_abi * *_cp314 license: Python-2.0 -size: 50062 -timestamp: 1770674497152 +size: 50212 +timestamp: 1779236703009 - conda: https://conda.anaconda.org/conda-forge/noarch/python-kaleido-0.2.1-pyhd8ed1ab_0.tar.bz2 sha256: e17bf63a30aec33432f1ead86e15e9febde9fc40a7f869c0e766be8d2db44170 md5: 310259a5b03ff02289d7705f39e2b1d2 @@ -1253,9 +1227,9 @@ license: MIT license_family: MIT size: 51788 timestamp: 1760379115194 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/regex-2026.2.28-py314h51f160d_0.conda -sha256: 2080ecea825e1ef91a2422cc0bc63e85db9e38908ed17657fb8f41de7a6eee71 -md5: 818aa2c9f6b3c808da5e7be22a9a424c +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/regex-2026.5.9-py314h51f160d_0.conda +sha256: 05ef55f09f31eabd0a205f6b065e13fc746675f41924620977692ef0ffe5aad8 +md5: 34ed7bc9febeca70f55b757ca09c354d depends: - libgcc >=14 - python >=3.14,<3.15.0a0 @@ -1263,27 +1237,27 @@ depends: - python_abi 3.14.* *_cp314 license: Apache-2.0 AND CNRI-Python license_family: PSF -size: 408097 -timestamp: 1772255205521 -- conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.5-pyhcf101f3_1.conda -sha256: 7813c38b79ae549504b2c57b3f33394cea4f2ad083f0994d2045c2e24cb538c5 -md5: c65df89a0b2e321045a9e01d1337b182 +size: 409780 +timestamp: 1778374195988 +- conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.34.2-pyhcf101f3_0.conda +sha256: 1715246b19c9f85ee022933b4845f2fc14ac9184981b7b7d9b728bec8e9588da +md5: 4a85203c1d80c1059086ae860836ffb9 depends: - python >=3.10 -- certifi >=2017.4.17 +- certifi >=2023.5.7 - charset-normalizer >=2,<4 - idna >=2.5,<4 -- urllib3 >=1.21.1,<3 +- urllib3 >=1.26,<3 - python constrains: -- chardet >=3.0.2,<6 +- chardet >=3.0.2,<8 license: Apache-2.0 license_family: APACHE -size: 63602 -timestamp: 1766926974520 -- conda: https://conda.anaconda.org/conda-forge/noarch/rich-14.3.3-pyhcf101f3_0.conda -sha256: b06ce84d6a10c266811a7d3adbfa1c11f13393b91cc6f8a5b468277d90be9590 -md5: 7a6289c50631d620652f5045a63eb573 +size: 68709 +timestamp: 1778851103479 +- conda: https://conda.anaconda.org/conda-forge/noarch/rich-15.0.0-pyhcf101f3_0.conda +sha256: 3d6ba2c0fcdac3196ba2f0615b4104e532525ffa1335b50a2878be5ff488814a +md5: 0242025a3c804966bf71aa04eee82f66 depends: - markdown-it-py >=2.2.0 - pygments >=2.13.0,<3.0.0 @@ -1292,8 +1266,8 @@ depends: - python license: MIT license_family: MIT -size: 208472 -timestamp: 1771572730357 +size: 208577 +timestamp: 1775991661559 - conda: https://conda.anaconda.org/conda-forge/noarch/rich-click-1.9.7-pyh8f84b5b_0.conda sha256: aa3fcb167321bae51998de2e94d199109c9024f25a5a063cb1c28d8f1af33436 md5: 0c20a8ebcddb24a45da89d5e917e6cb9 @@ -1331,19 +1305,18 @@ license: MIT license_family: MIT size: 22284 timestamp: 1735770589188 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sqlite-3.52.0-hf1c7be2_0.conda -sha256: 4f8523f5341f0d9e1547085206c6c1f71f9fc7c277443ca363a8cf98add8fc01 -md5: d9634079df93a65ee045b3c75f35cae1 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sqlite-3.53.1-he8854b5_0.conda +sha256: 27467e4bfb0681546f149718c33b806fec078185fbaa6a4d17d440bc8f56185c +md5: 46009bdca2315a99e0a3a7d0ba1af3b9 depends: -- icu >=78.2,<79.0a0 - libgcc >=14 -- libsqlite 3.52.0 h10b116e_0 -- libzlib >=1.3.1,<2.0a0 -- ncurses >=6.5,<7.0a0 +- libsqlite 3.53.1 h022381a_0 +- libzlib >=1.3.2,<2.0a0 +- ncurses >=6.6,<7.0a0 - readline >=8.3,<9.0a0 license: blessing -size: 209416 -timestamp: 1772818891689 +size: 209964 +timestamp: 1777986493350 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tiktoken-0.12.0-py314h6a36e60_3.conda sha256: c1da41c79262b27efa168407cfecc47b20270e5fc071a8307f95a2c85fb94170 md5: 55bf7b559202236157b14323b40f19e6 @@ -1382,20 +1355,20 @@ depends: license: MPL-2.0 and MIT size: 94132 timestamp: 1770153424136 -- conda: https://conda.anaconda.org/conda-forge/noarch/typeguard-4.5.1-pyhd8ed1ab_0.conda -sha256: 39d8ae33c43cdb8f771373e149b0b4fae5a08960ac58dcca95b2f1642bb17448 -md5: 260af1b0a94f719de76b4e14094e9a3b +- conda: https://conda.anaconda.org/conda-forge/noarch/typeguard-4.5.2-pyhcf101f3_0.conda +sha256: 59d7851d32fddb5b510272e6557aa982edeb927d349648dac27f5bf01d18bb26 +md5: 4460f039b7dedf15f7df086446ca75ae depends: -- importlib-metadata >=3.6 -- python >=3.10 -- typing-extensions >=4.10.0 - typing_extensions >=4.14.0 +- python >=3.10 +- importlib-metadata >=3.6 +- python constrains: - pytest >=7 license: MIT license_family: MIT -size: 36838 -timestamp: 1771532971545 +size: 38297 +timestamp: 1778779291237 - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.15.0-h396c80c_0.conda sha256: 7c2df5721c742c2a47b2c8f960e718c930031663ac1174da67c1ed5999f7938c md5: edd329d7d3a4ab45dcf905899a7a6115 @@ -1405,16 +1378,17 @@ license: PSF-2.0 license_family: PSF size: 91383 timestamp: 1756220668932 -- conda: https://conda.anaconda.org/conda-forge/noarch/typing-inspection-0.4.2-pyhd8ed1ab_1.conda -sha256: 70db27de58a97aeb7ba7448366c9853f91b21137492e0b4430251a1870aa8ff4 -md5: a0a4a3035667fc34f29bfbd5c190baa6 +- conda: https://conda.anaconda.org/conda-forge/noarch/typing-inspection-0.4.2-pyhcf101f3_2.conda +sha256: 8b90d2f19f9458b8c58a55e1fcdc1d90c1603a847a47654d8a454549413ba60a +md5: 53f5409c5cfd6c5a66417d68e3f0a864 depends: - python >=3.10 - typing_extensions >=4.12.0 +- python license: MIT license_family: MIT -size: 18923 -timestamp: 1764158430324 +size: 20935 +timestamp: 1777105465795 - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.15.0-pyhcf101f3_0.conda sha256: 032271135bca55aeb156cee361c81350c6f3fb203f57d024d7e5a1fc9ef18731 md5: 0caa1af407ecff61170c9437a808404d @@ -1431,9 +1405,9 @@ md5: ad659d0a2b3e47e38d829aa8cad2d610 license: LicenseRef-Public-Domain size: 119135 timestamp: 1767016325805 -- conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.6.3-pyhd8ed1ab_0.conda -sha256: af641ca7ab0c64525a96fd9ad3081b0f5bcf5d1cbb091afb3f6ed5a9eee6111a -md5: 9272daa869e03efe68833e3dc7a02130 +- conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.7.0-pyhd8ed1ab_0.conda +sha256: feff959a816f7988a0893201aa9727bbb7ee1e9cec2c4f0428269b489eb93fb4 +md5: cbb88288f74dbe6ada1c6c7d0a97223e depends: - backports.zstd >=1.0.0 - brotli-python >=1.2.0 @@ -1442,8 +1416,8 @@ depends: - python >=3.10 license: MIT license_family: MIT -size: 103172 -timestamp: 1767817860341 +size: 103560 +timestamp: 1778188657149 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxau-1.0.12-he30d5cf_1.conda sha256: e9f6e931feeb2f40e1fdbafe41d3b665f1ab6cb39c5880a1fcf9f79a3f3c84a5 md5: 1c246e1105000c3660558459e2fd6d43 @@ -1471,16 +1445,16 @@ license: MIT license_family: MIT size: 88088 timestamp: 1753484092643 -- conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.23.0-pyhcf101f3_1.conda -sha256: b4533f7d9efc976511a73ef7d4a2473406d7f4c750884be8e8620b0ce70f4dae -md5: 30cd29cb87d819caead4d55184c1d115 +- conda: https://conda.anaconda.org/conda-forge/noarch/zipp-4.1.0-pyhcf101f3_0.conda +sha256: 210bd31c22bb88f5e2a167df24c95bb5f152b2ada7502f9b8c49d1f5366db423 +md5: ba3dcdc8584155c97c648ae9c044b7a3 depends: - python >=3.10 - python license: MIT license_family: MIT -size: 24194 -timestamp: 1764460141901 +size: 24190 +timestamp: 1779159948016 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zlib-ng-2.3.3-ha7cb516_1.conda sha256: 638a3a41a4fbfed52d3c60c8ef5a3693b3f12a5b1a3f58fa29f5698d0a0702e2 md5: f731af71c723065d91b4c01bb822641b diff --git a/modules/nf-core/multiqc/environment.yml b/modules/nf-core/multiqc/environment.yml index 009874d4..7a970e2b 100644 --- a/modules/nf-core/multiqc/environment.yml +++ b/modules/nf-core/multiqc/environment.yml @@ -4,4 +4,4 @@ channels: - conda-forge - bioconda dependencies: - - bioconda::multiqc=1.33 + - bioconda::multiqc=1.35 diff --git a/modules/nf-core/multiqc/main.nf b/modules/nf-core/multiqc/main.nf index 5376aea1..c4bc715e 100644 --- a/modules/nf-core/multiqc/main.nf +++ b/modules/nf-core/multiqc/main.nf @@ -3,9 +3,9 @@ process MULTIQC { label 'process_single' conda "${moduleDir}/environment.yml" - container "${workflow.containerEngine == 'singularity' && !task.ext.singularity_pull_docker_container - ? 'https://community-cr-prod.seqera.io/docker/registry/v2/blobs/sha256/34/34e733a9ae16a27e80fe00f863ea1479c96416017f24a907996126283e7ecd4d/data' - : 'community.wave.seqera.io/library/multiqc:1.33--ee7739d47738383b'}" + container "${workflow.containerEngine in ['singularity', 'apptainer'] && !task.ext.singularity_pull_docker_container + ? 'https://community-cr-prod.seqera.io/docker/registry/v2/blobs/sha256/c8/c8e346f4f6080eadf1253505e6ff09ef004454fc18e8d672006fd7b222cc412e/data' + : 'community.wave.seqera.io/library/multiqc:1.35--c17fb751507e9dfc'}" input: tuple val(meta), path(multiqc_files, stageAs: "?/*"), path(multiqc_config, stageAs: "?/*"), path(multiqc_logo), path(replace_names), path(sample_names) diff --git a/modules/nf-core/multiqc/meta.yml b/modules/nf-core/multiqc/meta.yml index 57cf43ca..27ce18d8 100644 --- a/modules/nf-core/multiqc/meta.yml +++ b/modules/nf-core/multiqc/meta.yml @@ -110,24 +110,24 @@ maintainers: containers: conda: linux/amd64: - lock_file: modules/nf-core/multiqc/.conda-lock/linux_amd64-bd-c1f4a7982b743963_1.txt + lock_file: modules/nf-core/multiqc/.conda-lock/linux_amd64-bd-c17fb751507e9dfc_1.txt linux/arm64: - lock_file: modules/nf-core/multiqc/.conda-lock/linux_arm64-bd-40bf3b435e89dc22_1.txt + lock_file: modules/nf-core/multiqc/.conda-lock/linux_arm64-bd-5c84a5000a226ab5_1.txt docker: linux/amd64: - name: community.wave.seqera.io/library/multiqc:1.33--c1f4a7982b743963 - build_id: bd-c1f4a7982b743963_1 - scan_id: sc-b7b7f470b2a16699_1 + name: community.wave.seqera.io/library/multiqc:1.35--c17fb751507e9dfc + build_id: bd-c17fb751507e9dfc_1 + scan_id: sc-3b1b3932f9846892_1 linux/arm64: - name: community.wave.seqera.io/library/multiqc:1.33--40bf3b435e89dc22 - build_id: bd-40bf3b435e89dc22_1 - scan_id: sc-0e2108a0e7368d2f_1 + name: community.wave.seqera.io/library/multiqc:1.35--5c84a5000a226ab5 + build_id: bd-5c84a5000a226ab5_1 + scan_id: sc-0d39df41e9737bbd_1 singularity: linux/amd64: - name: oras://community.wave.seqera.io/library/multiqc:1.33--9b3473b1c4bb0493 - build_id: bd-9b3473b1c4bb0493_1 - https: https://community-cr-prod.seqera.io/docker/registry/v2/blobs/sha256/c4/c4e6d9f669e1a99b53c7dc5cdd6b8e7fd6654032c755bb783cc9849e8203f4d1/data + name: oras://community.wave.seqera.io/library/multiqc:1.35--c680f2aea25ccec2 + build_id: bd-c680f2aea25ccec2_1 + https: https://community-cr-prod.seqera.io/docker/registry/v2/blobs/sha256/c8/c8e346f4f6080eadf1253505e6ff09ef004454fc18e8d672006fd7b222cc412e/data linux/arm64: - name: oras://community.wave.seqera.io/library/multiqc:1.33--e1ef2065eb21b530 - build_id: bd-e1ef2065eb21b530_1 - https: https://community-cr-prod.seqera.io/docker/registry/v2/blobs/sha256/2a/2acce766e3efb280fa43acdbe85305ea6496ddadbcaa2d806ac4985dfe4686ce/data + name: oras://community.wave.seqera.io/library/multiqc:1.35--c0468833d65b2f81 + build_id: bd-c0468833d65b2f81_1 + https: https://community-cr-prod.seqera.io/docker/registry/v2/blobs/sha256/e4/e48aa28aebc881254a499b24c3e1ce77b8df1b85a5432699ed6f72eb17ac7fb5/data diff --git a/modules/nf-core/multiqc/tests/main.nf.test.snap b/modules/nf-core/multiqc/tests/main.nf.test.snap index 3bfc524f..44899216 100644 --- a/modules/nf-core/multiqc/tests/main.nf.test.snap +++ b/modules/nf-core/multiqc/tests/main.nf.test.snap @@ -81,7 +81,7 @@ [ "MULTIQC", "multiqc", - "1.33" + "1.35" ] ] } @@ -175,7 +175,7 @@ [ "MULTIQC", "multiqc", - "1.33" + "1.35" ] ] } @@ -221,7 +221,7 @@ [ "MULTIQC", "multiqc", - "1.33" + "1.35" ] ] } @@ -314,7 +314,7 @@ [ "MULTIQC", "multiqc", - "1.33" + "1.35" ] ] } @@ -408,7 +408,7 @@ [ "MULTIQC", "multiqc", - "1.33" + "1.35" ] ] } diff --git a/nextflow.config b/nextflow.config index 910a3ec7..5444147d 100644 --- a/nextflow.config +++ b/nextflow.config @@ -10,7 +10,7 @@ params { // Mandatory inputs - species = null + species = "" // general options keywords = "" @@ -49,14 +49,17 @@ params { normalisation_method = 'tpm' gene_length = null gff = null + gff_url = null quantile_norm_target_distrib = 'uniform' - nb_sections = 20 + nb_sections = 10 nb_candidates_per_section = 250 - missing_value_imputer = 'iterative' + + // missing value imputation + missing_value_imputer = 'knn' // stability scoring skip_genorm = false - stability_score_weights = "0.5,0.5,0,0" + stability_score_weights = "0.25,0.25,0.25,0.25" // random sampling random_sampling_seed = 42 @@ -316,10 +319,5 @@ plugins { id 'nf-schema@2.5.1' // Validation of pipeline parameters and creation of an input channel from a sample sheet } -validation { - defaultIgnoreParams = ["genomes"] - monochromeLogs = params.monochrome_logs -} - // Load modules.config for DSL2 module specific options includeConfig 'conf/modules.config' diff --git a/nextflow_schema.json b/nextflow_schema.json index 8109b426..828df669 100644 --- a/nextflow_schema.json +++ b/nextflow_schema.json @@ -10,7 +10,7 @@ "type": "object", "fa_icon": "fas fa-terminal", "description": "Define where the pipeline should find input data and save output data.", - "required": ["species", "outdir"], + "required": ["outdir"], "properties": { "species": { "type": "string", @@ -46,7 +46,7 @@ "target_genes": { "type": "string", "description": "Target genes", - "fa_icon": "fas fa-arrows-alt-h", + "fa_icon": "fas fa-bullseye", "help_text": "One or multiple target genes (separated by commas). These can be gene IDs (as provided in your input datasets), Ensembl gene IDs, or gene symbols." }, "target_gene_file": { @@ -54,26 +54,26 @@ "description": "File containing target genes", "format": "file-path", "exists": true, - "fa_icon": "fas fa-arrows-alt-h", + "fa_icon": "fas fa-file-word", "help_text": "File containing one or multiple target genes (one ID per line). These can be gene IDs (as provided in your input datasets), Ensembl gene IDs, or gene symbols." }, "platform": { "type": "string", "enum": ["rnaseq", "microarray"], "description": "Only download from this platform", - "fa_icon": "fas fa-arrows-alt-h", + "fa_icon": "fas fa-caravan", "help_text": "By default, data from both RNA-seq and Microarray platforms are downloaded. Setting this parameter applies a filter to get data from only one of the two platforms. This filter is only used while fetching appropriate Expression atlas / GEO accessions. It will not filter accessions provided directly by the user." }, "accessions_only": { "type": "boolean", "description": "Only get accessions from Expression Atlas / GEO and exit.", - "fa_icon": "far fa-stop-circle", + "fa_icon": "fas fa-align-center", "help_text": "Use this option if you only want to get Expression Atlas accessions and skip the rest of the pipeline." }, "download_only": { "type": "boolean", "description": "Only get accessions from Expression Atlas / GEO and download the selected datasets.", - "fa_icon": "far fa-stop-circle", + "fa_icon": "fas fa-download", "help_text": "Use this option if you only want to get Expression Atlas / GEO accessions, download the selected data, and skip the rest of the pipeline." }, "email": { @@ -98,13 +98,13 @@ "properties": { "skip_fetch_eatlas_accessions": { "type": "boolean", - "fa_icon": "fas fa-cloud-arrow-down", + "fa_icon": "fas fa-ban", "description": "Skip fetching Expression Atlas accessions", "help_text": "Expression Atlas accessions are automatically fetched by default. Set this parameter to skip this step." }, "fetch_geo_accessions": { "type": "boolean", - "fa_icon": "fas fa-cloud-arrow-down", + "fa_icon": "fas fa-cloud-download-alt", "description": "Fetch GEO accessions from NCBI [Experimental]", "help_text": "Set this parameter to fetch GEO accessions from NCBI. **This feature is experimental and may not work as expected**. Please report any issues to https://github.com/nf-core/stableexpression/issues." }, @@ -120,7 +120,7 @@ "format": "file-path", "exists": true, "description": "File containing Expression Atlas / GEO accession(s) to download", - "fa_icon": "fas fa-file", + "fa_icon": "fas fa-file-alt", "help_text": "File containing Expression Atlas / GEO accession(s) that you want to download. One accession per line. Example: `--accessions_file included_accessions.txt`. Combine with --skip_fetch_accessions if you want only these accessions to be used. User provided accessions are prioritised over excluded accessions." }, "excluded_accessions": { @@ -135,7 +135,7 @@ "format": "file-path", "exists": true, "description": "File containing Expression Atlas accession(s) to exclude", - "fa_icon": "fas fa-file", + "fa_icon": "fas fa-file-alt", "help_text": "File containing Expression Atlas / GEO accession(s) that you want to exclude. One accession per line. Example: `--excluded_accessions_file excluded_accessions.txt`." } } @@ -161,7 +161,7 @@ "gprofiler_target_db": { "type": "string", "description": "Experimental: target database for g:Profiler", - "fa_icon": "fas fa-divide", + "fa_icon": "far fa-dot-circle", "enum": ["ENSG", "ENTREZGENE", "UNIPROTSPTREMBL", "UNIPROTSWISSPROT"], "default": "ENSG", "help_text": "Experimental: target database for g:Profiler. You can see the full list of available target databases at https://biit.cs.ut.ee/gprofiler/convert." @@ -175,7 +175,7 @@ "pattern": "^\\S+\\.(csv|dat)$", "description": "Custom gene id mapping file", "help_text": "Path to comma-separated file containing custom gene id mappings. Each row represents a mapping from the original gene ID in your count datasets to a prefered gene ID. The mapping file should be a comma-separated file with 2 columns (original_gene_id and gene_id) and a header row.", - "fa_icon": "fas fa-file" + "fa_icon": "fas fa-file-alt" }, "gene_metadata": { "type": "string", @@ -186,12 +186,12 @@ "pattern": "^\\S+\\.(csv|dat)$", "description": "Custom gene metadata file", "help_text": "Path to comma-separated file containing custom gene metadata information. Each row represents a gene and links its gene ID to its name and description. The metadata file should be a comma-separated file with 3 columns (gene_id, name and description) and a header row.", - "fa_icon": "fas fa-file" + "fa_icon": "fas fa-file-alt" }, "min_occurrence_quantile": { "type": "number", "description": "Minimum quantile for the frequency of occurrence", - "fa_icon": "fas fa-battery-three-quarters", + "fa_icon": "far fa-chart-bar", "minimum": 0, "maximum": 1, "default": 0.2, @@ -200,7 +200,7 @@ "min_occurrence_freq": { "type": "number", "description": "Minimum frequency of occurrence among all datasets", - "fa_icon": "fas fa-battery-three-quarters", + "fa_icon": "fas fa-chart-bar", "minimum": 0, "maximum": 1, "default": 0.1, @@ -217,7 +217,7 @@ "max_zero_ratio": { "type": "number", "description": "Maximum ratio of zero counts to total counts", - "fa_icon": "fas fa-divide", + "fa_icon": "fab fa-creative-commons-zero", "minimum": 0, "maximum": 1, "default": 0.9, @@ -226,7 +226,7 @@ "max_null_ratio": { "type": "number", "description": "Maximum ratio of null values", - "fa_icon": "fas fa-divide", + "fa_icon": "fas fa-dizzy", "minimum": 0, "maximum": 1, "default": 0.9, @@ -235,7 +235,7 @@ "max_null_ratio_valid_sample": { "type": "number", "description": "Maximum ratio of null values in a sample for it to be considered in the computation of the null value malus", - "fa_icon": "fas fa-divide", + "fa_icon": "far fa-dizzy", "minimum": 0, "maximum": 1, "default": 0.75, @@ -262,10 +262,17 @@ "format": "file-path", "exists": true, "mimetype": "text/tsv", - "pattern": "^\\S+\\.(gff|dat)$", + "pattern": "^\\S+\\.(gff|gff3|dat)(\\.gz)?$", "description": "Genome annotation file (GFF format)", "help_text": "Path to genome annotation file (GFF format). Cannot be compressed.", - "fa_icon": "fas fa-file" + "fa_icon": "fas fa-file-alt" + }, + "gff_url": { + "type": "string", + "format": "uri", + "description": "URL to genome annotation file (GFF format)", + "help_text": "URL to genome annotation file (GFF format). Cannot be compressed.", + "fa_icon": "fas fa-file-alt" }, "gene_length": { "type": "string", @@ -276,7 +283,7 @@ "pattern": "^\\S+\\.(csv|tsv|dat)$", "description": "Gene length file", "help_text": "Path to comma-separated file containing gene lengths. Each row represents a gene and gives the length of its longest transcript. The file should be a comma-separated file with 2 columns (gene_id and length) and a header row.", - "fa_icon": "fas fa-file" + "fa_icon": "fas fa-file-alt" }, "quantile_norm_target_distrib": { "type": "string", @@ -285,14 +292,22 @@ "enum": ["uniform", "normal"], "default": "uniform", "help_text": "In order to compare counts between samples and different datasets, all normalised counts are quantile normalised and mapped to a specific distribution. The pipeline uses scikit-learn's quantile_transform function. You can select the target distribution to map counts to." - }, + } + } + }, + "missing_value_imputation_options": { + "title": "Missing value imputation options", + "type": "object", + "fa_icon": "fas fa-chart-line", + "description": "Options related to missing value imputation.", + "properties": { "missing_value_imputer": { "type": "string", "description": "Type of imputation method to use for missing values", - "fa_icon": "fas fa-battery-three-quarters", - "enum": ["iterative", "knn", "gene_mean"], - "default": "iterative", - "help_text": "The pipeline provides three options for imputing missing values: iterative, k-nearest neighbors, and gene mean. Iterative imputation uses a bayesian iterative algorithm to fill in missing values. K-nearest neighbors imputation uses a k-nearest neighbors algorithm to fill in missing values. Gene mean imputation is a very basic method that replaces missing values with the mean expression level of the gene across all samples." + "fa_icon": "fas fa-cogs", + "enum": ["knn", "iterative", "simple"], + "default": "knn", + "help_text": "The pipeline provides three options for imputing missing values: iterative, k-nearest neighbours, and gene mean. Iterative imputation uses a bayesian iterative algorithm to fill in missing values. K-nearest neighbors imputation uses a k-nearest neighbors algorithm to fill in missing values. Simple imputation is a very basic method that replaces missing values with the median expression level of the gene across all samples. In terms of memory usage, iterative >> knn x > simple. In cases where memory usage is a concern, consider decreasing the number of neighbours for KNN imputation or the number of nearest features for iterative imputation. On the contrary, you may want to increase these parameters if you want more accuracy." } } }, @@ -305,21 +320,23 @@ "nb_sections": { "type": "integer", "description": "Number of sections to divide genes into for stability scoring.", - "fa_icon": "fas fa-sort-numeric-up-alt", + "fa_icon": "fas fa-list-ol", "minimum": 1, - "help_text": "All genes are divided into sections based on their expression levels. Set this parameter to modify the number of sections." + "help_text": "All genes are divided into sections based on their expression levels. Set this parameter to modify the number of sections.", + "default": 10 }, "nb_candidates_per_section": { "type": "integer", "description": "Number of candidate genes to keep for stability scoring in each section", - "fa_icon": "fas fa-sort-numeric-up-alt", + "fa_icon": "fas fa-sort-numeric-down", "minimum": 1, - "help_text": "Number of candidate genes to keep in each section for stability scoring. Within each section, the top candidates are selected based on the descriptor chosen with `--candidate_selection_descriptor`." + "help_text": "Number of candidate genes to keep in each section for stability scoring. Within each section, the top candidates are selected based on the descriptor chosen with `--candidate_selection_descriptor`.", + "default": 250 }, "skip_genorm": { "type": "boolean", "description": "Run Genorm", - "fa_icon": "fas fa-check", + "fa_icon": "fas fa-ban", "help": "Skip Genorm by setting this parameter to true. In this case, by default, only Normfinder will participate in the stability score." }, "stability_score_weights": { @@ -327,7 +344,8 @@ "description": "Weights for stability score calculation", "fa_icon": "fas fa-balance-scale", "help_text": "Weights for Normfinder / Genorm / Coefficient of Variation (CV) / Robust Coefficient of Variation on Median (RCVM) respectively. Must be a comma-separated string. Example: 0.5,0.5,0.0,0", - "pattern": "^\\d+(\\.\\d+)?,\\d+(\\.\\d+)?,\\d+(\\.\\d+)?,\\d+(\\.\\d+)?$" + "pattern": "^\\d+(\\.\\d+)?,\\d+(\\.\\d+)?,\\d+(\\.\\d+)?,\\d+(\\.\\d+)?$", + "default": "0.25,0.25,0.25,0.25" } } }, @@ -340,16 +358,18 @@ "random_sampling_size": { "type": "integer", "description": "Number of public dataset samples to choose randomly before downloading.", - "fa_icon": "fas fa-sort-numeric-up-alt", + "fa_icon": "fas fa-random", "minimum": 1, - "help_text": "When dealing with species for which there is a large number (eg. >10000) of samples considering all the downloaded datasets, users may encounter RAM issues (eg. errors with `137` exit codes). In such cases, it is recommended to sample a random subset of these datasets to reduce the computational load. A first subsampling is performedduring the search for Expression Atlas accessions. In case there is still room for datasets and if the `--fetch_geo_accessions` flag was set, a second ssubsampling is performed during the search for NCBI GEO accessions." + "help_text": "When dealing with species for which there is a large number (eg. >10000) of samples considering all the downloaded datasets, users may encounter RAM issues (eg. errors with `137` exit codes). In such cases, it is recommended to sample a random subset of these datasets to reduce the computational load. A first subsampling is performedduring the search for Expression Atlas accessions. In case there is still room for datasets and if the `--fetch_geo_accessions` flag was set, a second ssubsampling is performed during the search for NCBI GEO accessions.", + "default": 5000 }, "random_sampling_seed": { "type": "integer", "description": "Seed for dataset random sampling.", - "fa_icon": "fas fa-sort-numeric-up-alt", + "fa_icon": "fas fa-random", "minimum": 0, - "help_text": "Seed for dataset random sampling. This ensures reproducibility of the random sampling process. Changing the seed will result in a different random sample being selected." + "help_text": "Seed for dataset random sampling. This ensures reproducibility of the random sampling process. Changing the seed will result in a different random sample being selected.", + "default": 42 } } }, @@ -527,6 +547,9 @@ { "$ref": "#/$defs/statistical_options" }, + { + "$ref": "#/$defs/missing_value_imputation_options" + }, { "$ref": "#/$defs/stability_scoring_options" }, diff --git a/nf-test.config b/nf-test.config index a0a009fd..e4b26ec4 100644 --- a/nf-test.config +++ b/nf-test.config @@ -21,7 +21,7 @@ config { // load the necessary plugins requires ( - "nf-test": "0.9.3" + "nf-test": "0.9.5" ) plugins { load "nft-utils@0.0.3" diff --git a/publication/get_eatlas_supported_species.py b/publication/get_eatlas_supported_species.py new file mode 100644 index 00000000..8dcf5094 --- /dev/null +++ b/publication/get_eatlas_supported_species.py @@ -0,0 +1,90 @@ +#!/usr/bin/env python3 + +# Written by Olivier Coen. Released under the MIT license. + +import logging +from collections import Counter + +import httpx +from tenacity import ( + before_sleep_log, + retry, + stop_after_delay, + wait_exponential, +) + +logging.basicConfig(level=logging.INFO) +logger = logging.getLogger(__name__) + +ALL_EXP_URL = "https://www.ebi.ac.uk/gxa/json/experiments/" + +################################################################## +################################################################## +# FUNCTIONS +################################################################## +################################################################## + + +@retry( + stop=stop_after_delay(600), + wait=wait_exponential(multiplier=1, min=1, max=30), + before_sleep=before_sleep_log(logger, logging.WARNING), +) +def get_data(url: str) -> dict: + """ + Queries a URL and returns the data as a JSON object + + Parameters + ---------- + url : str + The URL to query + + Returns + ------- + data : dict + The JSON object returned by the query + + Raises + ------ + RuntimeError + If the query fails + """ + response = httpx.get(url) + response.raise_for_status() + return response.json() + + +def get_eatlas_experiments(): + """ + Gets all experiments from Expression Atlas + + Parameters + ---------- + + Returns + ------- + experiments : list + A list of experiment dictionaries + """ + data = get_data(ALL_EXP_URL) + return data["experiments"] + + +################################################################## +################################################################## +# MAIN +################################################################## +################################################################## + + +def main(): + experiments = get_eatlas_experiments() + species = Counter( + sorted([" ".join(exp["species"].split(" ")[:2]) for exp in experiments]) + ) + print(species) + print(len(species)) + + +if __name__ == "__main__": + main() diff --git a/subworkflows/local/expression_normalisation/main.nf b/subworkflows/local/expression_normalisation/main.nf index 84130edd..7abcb699 100644 --- a/subworkflows/local/expression_normalisation/main.nf +++ b/subworkflows/local/expression_normalisation/main.nf @@ -18,6 +18,7 @@ workflow EXPRESSION_NORMALISATION { normalisation_method quantile_norm_target_distrib gff_file + gff_url gene_length_file main: @@ -47,7 +48,8 @@ workflow EXPRESSION_NORMALISATION { // and computing length of the longest transcript gene per gene GET_TRANSCRIPT_LENGTHS( species, - gff_file + gff_file, + gff_url ) ch_gene_length_file = GET_TRANSCRIPT_LENGTHS.out.csv diff --git a/subworkflows/local/genorm/main.nf b/subworkflows/local/genorm/main.nf index 6a88703e..f79fe56b 100644 --- a/subworkflows/local/genorm/main.nf +++ b/subworkflows/local/genorm/main.nf @@ -63,9 +63,7 @@ workflow GENORM { .map{ meta, file -> [ [ section: meta.section ], file ] } .groupTuple() - COMPUTE_M_MEASURE( - ch_counts.join( ch_ratio_files ) - ) + COMPUTE_M_MEASURE( ch_ratio_files ) emit: m_measures = COMPUTE_M_MEASURE.out.m_measures diff --git a/subworkflows/local/get_transcript_lengths/main.nf b/subworkflows/local/get_transcript_lengths/main.nf index df54de83..87762448 100644 --- a/subworkflows/local/get_transcript_lengths/main.nf +++ b/subworkflows/local/get_transcript_lengths/main.nf @@ -13,11 +13,14 @@ workflow GET_TRANSCRIPT_LENGTHS { take: species gff_file + gff_url main: if ( gff_file ) { ch_annotation = channel.fromPath( gff_file, checkIfExists: true ) + } else if ( gff_url ) { + ch_annotation = channel.fromPath( gff_url, checkIfExists: true ) } else { DOWNLOAD_ENSEMBL_ANNOTATION( species ) ch_annotation = DOWNLOAD_ENSEMBL_ANNOTATION.out.gff3 diff --git a/subworkflows/local/merge_data/main.nf b/subworkflows/local/merge_data/main.nf index 55b6cc52..a315e76b 100644 --- a/subworkflows/local/merge_data/main.nf +++ b/subworkflows/local/merge_data/main.nf @@ -84,7 +84,7 @@ workflow MERGE_DATA { seed: "batch,condition,sample", newLine: true, sort: true, - storeDir: "${outdir}/merged_datasets/" + storeDir: "${outdir}/merged_data/" ) { item -> "${item.batch},${item.condition},${item.sample}" } diff --git a/subworkflows/local/reporting/main.nf b/subworkflows/local/reporting/main.nf index 9d4fa676..797730e6 100644 --- a/subworkflows/local/reporting/main.nf +++ b/subworkflows/local/reporting/main.nf @@ -79,7 +79,6 @@ workflow REPORTING { ) ch_versions = ch_versions.mix ( DASH_APP.out.versions ) - // ------------------------------------------------------------------------------------ // PREPARING BAR PLOTS // ------------------------------------------------------------------------------------ diff --git a/subworkflows/local/sample_filtering/main.nf b/subworkflows/local/sample_filtering/main.nf index 31006f3f..bcdaccc9 100644 --- a/subworkflows/local/sample_filtering/main.nf +++ b/subworkflows/local/sample_filtering/main.nf @@ -44,6 +44,7 @@ workflow SAMPLE_FILTERING { ch_ratio_nulls_per_sample_file = TOO_MANY_MISSING_VALUES.out.ratio_nulls_per_sample .splitCsv( header: true ) + .map { item -> "${item["sample"]},${item["ratio"]}" } .collectFile( name: 'ratio_nulls_per_sample.csv', seed: "sample,ratio", @@ -51,9 +52,7 @@ workflow SAMPLE_FILTERING { storeDir: "${outdir}/statistics/", sort: true ) - { - item -> "${item["sample"]},${item["ratio"]}" - } + emit: counts = TOO_MANY_MISSING_VALUES.out.counts diff --git a/subworkflows/local/utils_nfcore_stableexpression_pipeline/main.nf b/subworkflows/local/utils_nfcore_stableexpression_pipeline/main.nf index ed736dd6..f1af972a 100644 --- a/subworkflows/local/utils_nfcore_stableexpression_pipeline/main.nf +++ b/subworkflows/local/utils_nfcore_stableexpression_pipeline/main.nf @@ -209,6 +209,10 @@ def validateInputParameters(params) { log.warn "Ignoring keywords as accessions will not be fetched from Expression Atlas or GEO" } + if ( params.gff && params.gff_url ) { + log.warn "Both gff and gff_url parameters are provided. Using gff." + } + } // diff --git a/tests/act/nf-test.yml b/tests/act/nf-test.yml index 52bde4aa..a4b65718 100644 --- a/tests/act/nf-test.yml +++ b/tests/act/nf-test.yml @@ -3,7 +3,7 @@ on: push: env: - NFT_VER: "0.9.3" + NFT_VER: "0.9.5" NFT_WORKDIR: "~" NXF_ANSI_LOG: false NXF_SINGULARITY_CACHEDIR: ${{ github.workspace }}/.singularity diff --git a/tests/default.nf.test.snap b/tests/default.nf.test.snap index 87571ee3..2d4aaa11 100644 --- a/tests/default.nf.test.snap +++ b/tests/default.nf.test.snap @@ -24,7 +24,7 @@ "python": "3.13.7" }, "COMPUTE_M_MEASURE": { - "polars": "1.39.2", + "polars": "1.41.2", "python": "3.14.3" }, "COMPUTE_STABILITY_SCORES": { @@ -139,28 +139,8 @@ "aggregated/section_1.most_stable_genes_transposed_counts.csv", "aggregated/section_10.most_stable_genes_summary.csv", "aggregated/section_10.most_stable_genes_transposed_counts.csv", - "aggregated/section_11.most_stable_genes_summary.csv", - "aggregated/section_11.most_stable_genes_transposed_counts.csv", - "aggregated/section_12.most_stable_genes_summary.csv", - "aggregated/section_12.most_stable_genes_transposed_counts.csv", - "aggregated/section_13.most_stable_genes_summary.csv", - "aggregated/section_13.most_stable_genes_transposed_counts.csv", - "aggregated/section_14.most_stable_genes_summary.csv", - "aggregated/section_14.most_stable_genes_transposed_counts.csv", - "aggregated/section_15.most_stable_genes_summary.csv", - "aggregated/section_15.most_stable_genes_transposed_counts.csv", - "aggregated/section_16.most_stable_genes_summary.csv", - "aggregated/section_16.most_stable_genes_transposed_counts.csv", - "aggregated/section_17.most_stable_genes_summary.csv", - "aggregated/section_17.most_stable_genes_transposed_counts.csv", - "aggregated/section_18.most_stable_genes_summary.csv", - "aggregated/section_18.most_stable_genes_transposed_counts.csv", - "aggregated/section_19.most_stable_genes_summary.csv", - "aggregated/section_19.most_stable_genes_transposed_counts.csv", "aggregated/section_2.most_stable_genes_summary.csv", "aggregated/section_2.most_stable_genes_transposed_counts.csv", - "aggregated/section_20.most_stable_genes_summary.csv", - "aggregated/section_20.most_stable_genes_transposed_counts.csv", "aggregated/section_3.most_stable_genes_summary.csv", "aggregated/section_3.most_stable_genes_transposed_counts.csv", "aggregated/section_4.most_stable_genes_summary.csv", @@ -206,7 +186,7 @@ "dash_app/src/utils/style.py", "errors", "gene_length", - "gene_length/Mus_musculus.GRCm39.115.chr.gff3.gz", + "gene_length/Mus_musculus.GRCm39.116.chr.gff3.gz", "gene_length/gene_transcript_lengths.csv", "idmapping", "idmapping/global_gene_id_mapping.csv", @@ -216,8 +196,11 @@ "idmapping/gprofiler/mapped_gene_ids.csv", "idmapping/renamed", "idmapping/renamed/SRP254919.salmon.merged.gene_counts.top1000cov.assay.cleaned.renamed.parquet", - "merged_datasets", - "merged_datasets/whole_design.csv", + "merged_counts", + "merged_counts/all_counts.parquet", + "merged_data", + "merged_data/all_counts.missing_values_imputed.parquet", + "merged_data/whole_design.csv", "multiqc", "multiqc/multiqc_data", "multiqc/multiqc_data/llms-full.txt", @@ -228,16 +211,6 @@ "multiqc/multiqc_data/multiqc_gene_statistics.txt", "multiqc/multiqc_data/multiqc_genes_section_1.txt", "multiqc/multiqc_data/multiqc_genes_section_1_1.txt", - "multiqc/multiqc_data/multiqc_genes_section_1_10.txt", - "multiqc/multiqc_data/multiqc_genes_section_1_11.txt", - "multiqc/multiqc_data/multiqc_genes_section_1_12.txt", - "multiqc/multiqc_data/multiqc_genes_section_1_13.txt", - "multiqc/multiqc_data/multiqc_genes_section_1_14.txt", - "multiqc/multiqc_data/multiqc_genes_section_1_15.txt", - "multiqc/multiqc_data/multiqc_genes_section_1_16.txt", - "multiqc/multiqc_data/multiqc_genes_section_1_17.txt", - "multiqc/multiqc_data/multiqc_genes_section_1_18.txt", - "multiqc/multiqc_data/multiqc_genes_section_1_19.txt", "multiqc/multiqc_data/multiqc_genes_section_1_2.txt", "multiqc/multiqc_data/multiqc_genes_section_1_3.txt", "multiqc/multiqc_data/multiqc_genes_section_1_4.txt", @@ -249,16 +222,6 @@ "multiqc/multiqc_data/multiqc_id_mapping_stats.txt", "multiqc/multiqc_data/multiqc_normalised_expr_distrib_section_1.txt", "multiqc/multiqc_data/multiqc_normalised_expr_distrib_section_1_1.txt", - "multiqc/multiqc_data/multiqc_normalised_expr_distrib_section_1_10.txt", - "multiqc/multiqc_data/multiqc_normalised_expr_distrib_section_1_11.txt", - "multiqc/multiqc_data/multiqc_normalised_expr_distrib_section_1_12.txt", - "multiqc/multiqc_data/multiqc_normalised_expr_distrib_section_1_13.txt", - "multiqc/multiqc_data/multiqc_normalised_expr_distrib_section_1_14.txt", - "multiqc/multiqc_data/multiqc_normalised_expr_distrib_section_1_15.txt", - "multiqc/multiqc_data/multiqc_normalised_expr_distrib_section_1_16.txt", - "multiqc/multiqc_data/multiqc_normalised_expr_distrib_section_1_17.txt", - "multiqc/multiqc_data/multiqc_normalised_expr_distrib_section_1_18.txt", - "multiqc/multiqc_data/multiqc_normalised_expr_distrib_section_1_19.txt", "multiqc/multiqc_data/multiqc_normalised_expr_distrib_section_1_2.txt", "multiqc/multiqc_data/multiqc_normalised_expr_distrib_section_1_3.txt", "multiqc/multiqc_data/multiqc_normalised_expr_distrib_section_1_4.txt", @@ -308,102 +271,62 @@ "warnings/renaming_warning_reasons.tsv" ], [ - "all_genes_summary.csv:md5,67694aeb7cb1bec8e31a604fa5350783", - "custom_content_multiqc_config.yaml:md5,e048085491cb74658cf363545b1278fe", - "section_1.most_stable_genes_summary.csv:md5,f62b0f3c0462c8a6aeba61ed083ce07e", - "section_1.most_stable_genes_transposed_counts.csv:md5,7c197e7b57cdaee0b0250aed93050e24", - "section_10.most_stable_genes_summary.csv:md5,9b8dde024b554d9b2318bad7e4b76252", - "section_10.most_stable_genes_transposed_counts.csv:md5,6d9df5bef8a5b44340bbdc141d229f68", - "section_11.most_stable_genes_summary.csv:md5,255237f708e36bcd0290be1e811fd8b2", - "section_11.most_stable_genes_transposed_counts.csv:md5,08c786a9859eeae873dacbec33bb2e9e", - "section_12.most_stable_genes_summary.csv:md5,7597d72cce386c406bae974f6bccc089", - "section_12.most_stable_genes_transposed_counts.csv:md5,e93e7f64d0b5890ad95b5e0a9398f255", - "section_13.most_stable_genes_summary.csv:md5,5d0906956d78014f3bef28227e4af8f6", - "section_13.most_stable_genes_transposed_counts.csv:md5,93070ff7b4e36a2486a4b8b45f957ac8", - "section_14.most_stable_genes_summary.csv:md5,5e4743e56fbe09cc030f8401944d219c", - "section_14.most_stable_genes_transposed_counts.csv:md5,dd80d0a9118f20f47b3d06e479423713", - "section_15.most_stable_genes_summary.csv:md5,87a32675404d3908277e725954daf477", - "section_15.most_stable_genes_transposed_counts.csv:md5,0e6ed0bc24c70e3fca43691d87b39eec", - "section_16.most_stable_genes_summary.csv:md5,10b6a0507815b5a0f19371945cee71d9", - "section_16.most_stable_genes_transposed_counts.csv:md5,0dedfedd98859fabb0ba0bb57b08efce", - "section_17.most_stable_genes_summary.csv:md5,6e9ea1f25adaafdeec78ad3419815b68", - "section_17.most_stable_genes_transposed_counts.csv:md5,85a7c2959d89324cc6f250493d4520a7", - "section_18.most_stable_genes_summary.csv:md5,cafcd5fff5842789dc2024c9ec2b45d8", - "section_18.most_stable_genes_transposed_counts.csv:md5,69a36fb3843257e1c67fe06282a22671", - "section_19.most_stable_genes_summary.csv:md5,1a2f4da7114df0cdc08c09f024718d0c", - "section_19.most_stable_genes_transposed_counts.csv:md5,4e4b2100fca4c6d461333edf6e5fd9e7", - "section_2.most_stable_genes_summary.csv:md5,74094f7f58405bcfce2972a1073db7ee", - "section_2.most_stable_genes_transposed_counts.csv:md5,67e877f84141462327383d622cab7b49", - "section_20.most_stable_genes_summary.csv:md5,57068c5336541f1cfa8ae699f098b0b6", - "section_20.most_stable_genes_transposed_counts.csv:md5,5691275bafee54ec2520d82011295495", - "section_3.most_stable_genes_summary.csv:md5,537ce26b668dceffd0c23126fb97cef4", - "section_3.most_stable_genes_transposed_counts.csv:md5,907103b9138b1d27b6a17d321ca59bca", - "section_4.most_stable_genes_summary.csv:md5,cb353777ed864969add3036f4aa664ea", - "section_4.most_stable_genes_transposed_counts.csv:md5,2794b4e29fa21c53604cfc189ce6ecdf", - "section_5.most_stable_genes_summary.csv:md5,667468cdafb70c899dd3f7b7cb603ba6", - "section_5.most_stable_genes_transposed_counts.csv:md5,4d4395309a84a820d6c3169906824657", - "section_6.most_stable_genes_summary.csv:md5,62d2ade9627014c122f22bc1a32776a6", - "section_6.most_stable_genes_transposed_counts.csv:md5,73806b0e960342be7378aface0618229", - "section_7.most_stable_genes_summary.csv:md5,56a27a3d372727d3a0dfdef023f9aad2", - "section_7.most_stable_genes_transposed_counts.csv:md5,2067a0574e51f1fe8bf590addbfd6ea9", - "section_8.most_stable_genes_summary.csv:md5,79c41e03a858dd68a5614b1343938c24", - "section_8.most_stable_genes_transposed_counts.csv:md5,35e02009d4aff77f0fca02711a8ad058", - "section_9.most_stable_genes_summary.csv:md5,0e7776950594471fc8dfb914eed0a17a", - "section_9.most_stable_genes_transposed_counts.csv:md5,e102dcbb3bdcec1bd724adbd772655d1", + "all_genes_summary.csv:md5,3d1045f80b7201b81070d41bf99132fd", + "custom_content_multiqc_config.yaml:md5,d06ac9dfa6f18df6bcf46181c267ddab", + "section_1.most_stable_genes_summary.csv:md5,de811fc04650ca4be98c529aed94328e", + "section_1.most_stable_genes_transposed_counts.csv:md5,74b993abf7f0f9cfc22206ae21cad027", + "section_10.most_stable_genes_summary.csv:md5,08efcd21d3c00d4e92ef639a3e9dac39", + "section_10.most_stable_genes_transposed_counts.csv:md5,7acbd54cd4eac1a9e0b9ac95b6f19646", + "section_2.most_stable_genes_summary.csv:md5,88ec34c3184cff9af2ba29e238d649d6", + "section_2.most_stable_genes_transposed_counts.csv:md5,8899eb1f22704e6de4496c8c73dce6ea", + "section_3.most_stable_genes_summary.csv:md5,c975cee46e070ed94a93f892615eb498", + "section_3.most_stable_genes_transposed_counts.csv:md5,a05e6d6e087aaba384601734cc18ed01", + "section_4.most_stable_genes_summary.csv:md5,d79a48150407fea4ad51a557a8611726", + "section_4.most_stable_genes_transposed_counts.csv:md5,4fb9ea066c7d561a3b1aee6ebc87062e", + "section_5.most_stable_genes_summary.csv:md5,1cc3940432418d1c5a4bf3c9857019ca", + "section_5.most_stable_genes_transposed_counts.csv:md5,3ba3e5ca67a56bcd54610b3e9531af3c", + "section_6.most_stable_genes_summary.csv:md5,a22e0a1c40f7197e0323128982738603", + "section_6.most_stable_genes_transposed_counts.csv:md5,260e9f88d8bde12d7300c95dafe4dee2", + "section_7.most_stable_genes_summary.csv:md5,4082a0f96210c68a6729d25cde4fc566", + "section_7.most_stable_genes_transposed_counts.csv:md5,2e26d6fb007e7ac53386e69db3a0ba4b", + "section_8.most_stable_genes_summary.csv:md5,138cf1a0f666c8623d680afd9e26c888", + "section_8.most_stable_genes_transposed_counts.csv:md5,4dd2cbff39b6a9788ae2118317ef3334", + "section_9.most_stable_genes_summary.csv:md5,f5f134657956348aade996869c17b21f", + "section_9.most_stable_genes_transposed_counts.csv:md5,a69e653eec1d62e84c376c385cdce0ef", "style.css:md5,e6ba182eaf06980dbda49920efbf6e64", - "all_genes_summary.csv:md5,67694aeb7cb1bec8e31a604fa5350783", + "all_genes_summary.csv:md5,3d1045f80b7201b81070d41bf99132fd", "whole_design.csv:md5,f29515bc2c783e593fb9028127342593", "environment.yml:md5,dd081780e1f98d34b13289d019f8bb5b", - "Mus_musculus.GRCm39.115.chr.gff3.gz:md5,66a5d70eeb2ce9685ca871fc7b0f4f96", - "gene_transcript_lengths.csv:md5,09e2d2a8881df9aa96ee71802e9c3451", + "Mus_musculus.GRCm39.116.chr.gff3.gz:md5,8db25f5186d0671a328b41b650af667f", + "gene_transcript_lengths.csv:md5,d6b8d94eb9e7907d601600c9bf58ff7b", "global_gene_id_mapping.csv:md5,78934d2ac5fe7d863f114c5703f57a06", - "global_gene_metadata.csv:md5,bd76860b422e45eca7cd583212a977d2", - "gene_metadata.csv:md5,bd76860b422e45eca7cd583212a977d2", + "global_gene_metadata.csv:md5,3b7a412c544dc438d9ebd2d4e02ad232", + "gene_metadata.csv:md5,3b7a412c544dc438d9ebd2d4e02ad232", "mapped_gene_ids.csv:md5,78934d2ac5fe7d863f114c5703f57a06", "whole_design.csv:md5,f29515bc2c783e593fb9028127342593", "multiqc_citations.txt:md5,4c806e63a283ec1b7e78cdae3a923d4f", - "multiqc_gene_statistics.txt:md5,9285ae2cfc531a0987e3172be0aa6483", - "multiqc_genes_section_1.txt:md5,3d44381703173383e455e59e84c3ecd9", - "multiqc_genes_section_1_1.txt:md5,49f24363739b3b2952ad813b0a1dc7c9", - "multiqc_genes_section_1_10.txt:md5,23eda043b3773d143f42c79943785baa", - "multiqc_genes_section_1_11.txt:md5,f221ca530b336e01b6c5a7f3a74b4262", - "multiqc_genes_section_1_12.txt:md5,df9f14313b281daae80438b134f25326", - "multiqc_genes_section_1_13.txt:md5,186cbc4df4a2d8bb05ff272725ad573e", - "multiqc_genes_section_1_14.txt:md5,efb4bfa55b0981b5b683a5d3bcf4fee3", - "multiqc_genes_section_1_15.txt:md5,cc47d6728943dafbdf0fa65ef0d075d9", - "multiqc_genes_section_1_16.txt:md5,35b7292de1819b89ece3df46081e6db3", - "multiqc_genes_section_1_17.txt:md5,8468a21c35f53afffe1f3f5a49f56aa7", - "multiqc_genes_section_1_18.txt:md5,8f2906665b62c75ab1786214124c02d1", - "multiqc_genes_section_1_19.txt:md5,d879c38bd6016d13a55adf59b4de7d99", - "multiqc_genes_section_1_2.txt:md5,58126f33166e756917d3fca0c66aafa8", - "multiqc_genes_section_1_3.txt:md5,dded6f5abee4f377eb093d6b95b6daa0", - "multiqc_genes_section_1_4.txt:md5,2c9a3ba7a78140a1e01afcc15b35c835", - "multiqc_genes_section_1_5.txt:md5,cddedab71e149bb731d6dee130dbea65", - "multiqc_genes_section_1_6.txt:md5,8c21ab38a3c761b0fefc029812b1cc35", - "multiqc_genes_section_1_7.txt:md5,d5779f1d0e92d80de7dc728e375d57ee", - "multiqc_genes_section_1_8.txt:md5,66e168eafc2bd8be9e9a397d0fc1c4b9", - "multiqc_genes_section_1_9.txt:md5,62a4f655b779f14b751e47f32bf7ccf1", + "multiqc_gene_statistics.txt:md5,5a0b9966186e0af4e745ff2937de3338", + "multiqc_genes_section_1.txt:md5,39b250c80cf9a39f73c8774448d53817", + "multiqc_genes_section_1_1.txt:md5,b4a96777a0533ea98fda06a246e8924c", + "multiqc_genes_section_1_2.txt:md5,f4fb0d5948e7ca188cee9463a9b0518f", + "multiqc_genes_section_1_3.txt:md5,9633c4322b7442018d298d9fdfea440e", + "multiqc_genes_section_1_4.txt:md5,0a63d63ca2f410b96ffbbc4e983c980e", + "multiqc_genes_section_1_5.txt:md5,e1178e47c65e8ad467391e115c2cded4", + "multiqc_genes_section_1_6.txt:md5,ada9fbaf097fe789795b3f6884583ebf", + "multiqc_genes_section_1_7.txt:md5,24e2f905c7585464e219a839b0f1b223", + "multiqc_genes_section_1_8.txt:md5,bc6100a361cb42d51d5f1a9949be10f0", + "multiqc_genes_section_1_9.txt:md5,8c8a12f227ac3e215576db9325ecd937", "multiqc_id_mapping_stats.txt:md5,600e9fa5656a06a3288ea7e6d9fef647", - "multiqc_normalised_expr_distrib_section_1.txt:md5,342306198c5930791d9255b481b6daa8", - "multiqc_normalised_expr_distrib_section_1_1.txt:md5,3a1b52103dd52cceeede5b99f0c18d1c", - "multiqc_normalised_expr_distrib_section_1_10.txt:md5,69d9ea655368e4b61ea3c49dc336ccc3", - "multiqc_normalised_expr_distrib_section_1_11.txt:md5,cf5fcd0fb87409255e88f808993570a8", - "multiqc_normalised_expr_distrib_section_1_12.txt:md5,e0767d376933c8849a08ba998acaee39", - "multiqc_normalised_expr_distrib_section_1_13.txt:md5,76d7fd5652e923ad09000bc80f9aa4ca", - "multiqc_normalised_expr_distrib_section_1_14.txt:md5,ce675ff07c194b1c975879f3288a27e8", - "multiqc_normalised_expr_distrib_section_1_15.txt:md5,5936ef07006c81b688289ec764994932", - "multiqc_normalised_expr_distrib_section_1_16.txt:md5,1a5a56d8661bcc0f986058a90ebb81b0", - "multiqc_normalised_expr_distrib_section_1_17.txt:md5,8c4c83bdcc648b4cbd5876c58d8c30d8", - "multiqc_normalised_expr_distrib_section_1_18.txt:md5,832ad87d6f4689a459e443a032f67f9d", - "multiqc_normalised_expr_distrib_section_1_19.txt:md5,83be81b32d7c48685015c2ede21fb511", - "multiqc_normalised_expr_distrib_section_1_2.txt:md5,f1e22de47e393569f3d193a30bbdc9cd", - "multiqc_normalised_expr_distrib_section_1_3.txt:md5,9e190919da3fc866beb78076ad8c4a33", - "multiqc_normalised_expr_distrib_section_1_4.txt:md5,3712b42a48fa257ad75f2deba10f631d", - "multiqc_normalised_expr_distrib_section_1_5.txt:md5,d927439c8e03a2e6f2ad18f16a90afff", - "multiqc_normalised_expr_distrib_section_1_6.txt:md5,b2d87c20485c9ffdd0237c4372d9d6e9", - "multiqc_normalised_expr_distrib_section_1_7.txt:md5,d18c331b910ce9702b5a977521c39aa1", - "multiqc_normalised_expr_distrib_section_1_8.txt:md5,1a6c7f079559251385f268beee39c9cb", - "multiqc_normalised_expr_distrib_section_1_9.txt:md5,688908e507b313d477957cb1d7d6e1a2", + "multiqc_normalised_expr_distrib_section_1.txt:md5,975205b6982d2695a38b984cc0ff395c", + "multiqc_normalised_expr_distrib_section_1_1.txt:md5,27885f75a672b0c36f5521e3e542edea", + "multiqc_normalised_expr_distrib_section_1_2.txt:md5,ca88a8bf61e6c71133845f6f66f2526d", + "multiqc_normalised_expr_distrib_section_1_3.txt:md5,0e7ac026e4ecea46a878f64688a694fa", + "multiqc_normalised_expr_distrib_section_1_4.txt:md5,f2ea6f561e55495046f777cc12c16982", + "multiqc_normalised_expr_distrib_section_1_5.txt:md5,1efe7599717b5d7aa9db2964a3675b11", + "multiqc_normalised_expr_distrib_section_1_6.txt:md5,6fea1e15abaf6c828215df54113ae24d", + "multiqc_normalised_expr_distrib_section_1_7.txt:md5,fd31bde94e4ca3104c8f519671d100c4", + "multiqc_normalised_expr_distrib_section_1_8.txt:md5,e3e62abc9c4c4a213f9cc62443adb78d", + "multiqc_normalised_expr_distrib_section_1_9.txt:md5,23ee9e58e0da44626f273df9b5832822", "multiqc_null_values_filter.txt:md5,64ca3e3acc613e1b85733fd847712a37", "multiqc_ratio_nulls.txt:md5,7063b06cadcf854671bc9cefb51a6fe3", "multiqc_ratio_zeros.txt:md5,7063b06cadcf854671bc9cefb51a6fe3", @@ -419,23 +342,26 @@ "renaming_warning_reasons.tsv:md5,0a11a59b5b547a39ab7a0e4dac622173" ] ], + "timestamp": "2026-06-18T17:52:40.041030321", "meta": { "nf-test": "0.9.5", - "nextflow": "25.10.4" - }, - "timestamp": "2026-04-05T09:10:44.402386214" + "nextflow": "26.04.3" + } }, "-profile test_skip_id_mapping": { "content": [ [ "errors", "gene_length", - "gene_length/Solanum_tuberosum.SolTub_3.0.62.gff3.gz", + "gene_length/Solanum_tuberosum.SolTub_3.0.63.gff3.gz", "gene_length/gene_transcript_lengths.csv", "idmapping", "idmapping/gene_ids.txt", - "merged_datasets", - "merged_datasets/whole_design.csv", + "merged_counts", + "merged_counts/all_counts.parquet", + "merged_data", + "merged_data/all_counts.missing_values_imputed.parquet", + "merged_data/whole_design.csv", "multiqc", "multiqc/multiqc_data", "multiqc/multiqc_data/llms-full.txt", @@ -467,7 +393,7 @@ "warnings" ], [ - "Solanum_tuberosum.SolTub_3.0.62.gff3.gz:md5,cca99141f43d57d697f6df75de790e05", + "Solanum_tuberosum.SolTub_3.0.63.gff3.gz:md5,2cd34d7db3d162f8fae7bf82d56ff744", "gene_transcript_lengths.csv:md5,217aa7c1e227ce2f78a905138d8e5b39", "gene_ids.txt:md5,831b47f91a0808802967aa0e53a25de9", "whole_design.csv:md5,70d6c2673e619ca52d2774fb3e368382", @@ -479,11 +405,11 @@ "zero_values_filter_stats.csv:md5,ebad5386e7c670ff04887eff67c8faae" ] ], + "timestamp": "2026-06-12T08:21:57.94155834", "meta": { "nf-test": "0.9.5", - "nextflow": "25.10.4" - }, - "timestamp": "2026-04-04T22:10:20.013206958" + "nextflow": "25.04.0" + } }, "-profile test_dataset_custom_mapping_and_gene_length": { "content": [ @@ -508,7 +434,7 @@ "idmapping/global_gene_id_mapping.csv", "idmapping/global_gene_metadata.csv", "idmapping/renamed", - "merged_datasets", + "merged_data", "multiqc", "multiqc/multiqc_data", "multiqc/multiqc_data/llms-full.txt", @@ -534,11 +460,11 @@ "id_mapping_stats.csv:md5,20bd1443c864cb013c97efc760465e9c" ] ], + "timestamp": "2026-06-12T08:03:51.859316293", "meta": { - "nf-test": "0.9.3", - "nextflow": "25.10.4" - }, - "timestamp": "2026-03-21T12:53:02.926804675" + "nf-test": "0.9.5", + "nextflow": "25.04.0" + } }, "-profile test": { "content": [ @@ -550,28 +476,8 @@ "aggregated/section_1.most_stable_genes_transposed_counts.csv", "aggregated/section_10.most_stable_genes_summary.csv", "aggregated/section_10.most_stable_genes_transposed_counts.csv", - "aggregated/section_11.most_stable_genes_summary.csv", - "aggregated/section_11.most_stable_genes_transposed_counts.csv", - "aggregated/section_12.most_stable_genes_summary.csv", - "aggregated/section_12.most_stable_genes_transposed_counts.csv", - "aggregated/section_13.most_stable_genes_summary.csv", - "aggregated/section_13.most_stable_genes_transposed_counts.csv", - "aggregated/section_14.most_stable_genes_summary.csv", - "aggregated/section_14.most_stable_genes_transposed_counts.csv", - "aggregated/section_15.most_stable_genes_summary.csv", - "aggregated/section_15.most_stable_genes_transposed_counts.csv", - "aggregated/section_16.most_stable_genes_summary.csv", - "aggregated/section_16.most_stable_genes_transposed_counts.csv", - "aggregated/section_17.most_stable_genes_summary.csv", - "aggregated/section_17.most_stable_genes_transposed_counts.csv", - "aggregated/section_18.most_stable_genes_summary.csv", - "aggregated/section_18.most_stable_genes_transposed_counts.csv", - "aggregated/section_19.most_stable_genes_summary.csv", - "aggregated/section_19.most_stable_genes_transposed_counts.csv", "aggregated/section_2.most_stable_genes_summary.csv", "aggregated/section_2.most_stable_genes_transposed_counts.csv", - "aggregated/section_20.most_stable_genes_summary.csv", - "aggregated/section_20.most_stable_genes_transposed_counts.csv", "aggregated/section_3.most_stable_genes_summary.csv", "aggregated/section_3.most_stable_genes_transposed_counts.csv", "aggregated/section_4.most_stable_genes_summary.csv", @@ -617,7 +523,7 @@ "dash_app/src/utils/style.py", "errors", "gene_length", - "gene_length/Prunus_persica.Prunus_persica_NCBIv2.62.chr.gff3.gz", + "gene_length/Prunus_persica.Prunus_persica_NCBIv2.63.chr.gff3.gz", "gene_length/gene_transcript_lengths.csv", "idmapping", "idmapping/global_gene_id_mapping.csv", @@ -627,8 +533,11 @@ "idmapping/gprofiler/mapped_gene_ids.csv", "idmapping/renamed", "idmapping/renamed/E_ENAD_3_rnaseq.rnaseq.raw.counts.cleaned.renamed.parquet", - "merged_datasets", - "merged_datasets/whole_design.csv", + "merged_counts", + "merged_counts/all_counts.parquet", + "merged_data", + "merged_data/all_counts.missing_values_imputed.parquet", + "merged_data/whole_design.csv", "multiqc", "multiqc/multiqc_data", "multiqc/multiqc_data/llms-full.txt", @@ -641,16 +550,6 @@ "multiqc/multiqc_data/multiqc_gene_statistics.txt", "multiqc/multiqc_data/multiqc_genes_section_1.txt", "multiqc/multiqc_data/multiqc_genes_section_1_1.txt", - "multiqc/multiqc_data/multiqc_genes_section_1_10.txt", - "multiqc/multiqc_data/multiqc_genes_section_1_11.txt", - "multiqc/multiqc_data/multiqc_genes_section_1_12.txt", - "multiqc/multiqc_data/multiqc_genes_section_1_13.txt", - "multiqc/multiqc_data/multiqc_genes_section_1_14.txt", - "multiqc/multiqc_data/multiqc_genes_section_1_15.txt", - "multiqc/multiqc_data/multiqc_genes_section_1_16.txt", - "multiqc/multiqc_data/multiqc_genes_section_1_17.txt", - "multiqc/multiqc_data/multiqc_genes_section_1_18.txt", - "multiqc/multiqc_data/multiqc_genes_section_1_19.txt", "multiqc/multiqc_data/multiqc_genes_section_1_2.txt", "multiqc/multiqc_data/multiqc_genes_section_1_3.txt", "multiqc/multiqc_data/multiqc_genes_section_1_4.txt", @@ -662,16 +561,6 @@ "multiqc/multiqc_data/multiqc_id_mapping_stats.txt", "multiqc/multiqc_data/multiqc_normalised_expr_distrib_section_1.txt", "multiqc/multiqc_data/multiqc_normalised_expr_distrib_section_1_1.txt", - "multiqc/multiqc_data/multiqc_normalised_expr_distrib_section_1_10.txt", - "multiqc/multiqc_data/multiqc_normalised_expr_distrib_section_1_11.txt", - "multiqc/multiqc_data/multiqc_normalised_expr_distrib_section_1_12.txt", - "multiqc/multiqc_data/multiqc_normalised_expr_distrib_section_1_13.txt", - "multiqc/multiqc_data/multiqc_normalised_expr_distrib_section_1_14.txt", - "multiqc/multiqc_data/multiqc_normalised_expr_distrib_section_1_15.txt", - "multiqc/multiqc_data/multiqc_normalised_expr_distrib_section_1_16.txt", - "multiqc/multiqc_data/multiqc_normalised_expr_distrib_section_1_17.txt", - "multiqc/multiqc_data/multiqc_normalised_expr_distrib_section_1_18.txt", - "multiqc/multiqc_data/multiqc_normalised_expr_distrib_section_1_19.txt", "multiqc/multiqc_data/multiqc_normalised_expr_distrib_section_1_2.txt", "multiqc/multiqc_data/multiqc_normalised_expr_distrib_section_1_3.txt", "multiqc/multiqc_data/multiqc_normalised_expr_distrib_section_1_4.txt", @@ -690,14 +579,47 @@ "multiqc/multiqc_data/multiqc_zero_values_filter.txt", "multiqc/multiqc_plots", "multiqc/multiqc_plots/pdf", + "multiqc/multiqc_plots/pdf/eatlas_all_experiments_metadata.pdf", + "multiqc/multiqc_plots/pdf/eatlas_selected_experiments_metadata.pdf", + "multiqc/multiqc_plots/pdf/gene_statistics.pdf", "multiqc/multiqc_plots/pdf/genes_section_1.pdf", + "multiqc/multiqc_plots/pdf/id_mapping_stats-cnt.pdf", + "multiqc/multiqc_plots/pdf/id_mapping_stats-pct.pdf", "multiqc/multiqc_plots/pdf/normalised_expr_distrib_section_1.pdf", + "multiqc/multiqc_plots/pdf/null_values_filter.pdf", + "multiqc/multiqc_plots/pdf/ratio_nulls.pdf", + "multiqc/multiqc_plots/pdf/ratio_zeros.pdf", + "multiqc/multiqc_plots/pdf/skewness.pdf", + "multiqc/multiqc_plots/pdf/total_gene_id_occurrence_quantiles.pdf", + "multiqc/multiqc_plots/pdf/zero_values_filter.pdf", "multiqc/multiqc_plots/png", + "multiqc/multiqc_plots/png/eatlas_all_experiments_metadata.png", + "multiqc/multiqc_plots/png/eatlas_selected_experiments_metadata.png", + "multiqc/multiqc_plots/png/gene_statistics.png", "multiqc/multiqc_plots/png/genes_section_1.png", + "multiqc/multiqc_plots/png/id_mapping_stats-cnt.png", + "multiqc/multiqc_plots/png/id_mapping_stats-pct.png", "multiqc/multiqc_plots/png/normalised_expr_distrib_section_1.png", + "multiqc/multiqc_plots/png/null_values_filter.png", + "multiqc/multiqc_plots/png/ratio_nulls.png", + "multiqc/multiqc_plots/png/ratio_zeros.png", + "multiqc/multiqc_plots/png/skewness.png", + "multiqc/multiqc_plots/png/total_gene_id_occurrence_quantiles.png", + "multiqc/multiqc_plots/png/zero_values_filter.png", "multiqc/multiqc_plots/svg", + "multiqc/multiqc_plots/svg/eatlas_all_experiments_metadata.svg", + "multiqc/multiqc_plots/svg/eatlas_selected_experiments_metadata.svg", + "multiqc/multiqc_plots/svg/gene_statistics.svg", "multiqc/multiqc_plots/svg/genes_section_1.svg", + "multiqc/multiqc_plots/svg/id_mapping_stats-cnt.svg", + "multiqc/multiqc_plots/svg/id_mapping_stats-pct.svg", "multiqc/multiqc_plots/svg/normalised_expr_distrib_section_1.svg", + "multiqc/multiqc_plots/svg/null_values_filter.svg", + "multiqc/multiqc_plots/svg/ratio_nulls.svg", + "multiqc/multiqc_plots/svg/ratio_zeros.svg", + "multiqc/multiqc_plots/svg/skewness.svg", + "multiqc/multiqc_plots/svg/total_gene_id_occurrence_quantiles.svg", + "multiqc/multiqc_plots/svg/zero_values_filter.svg", "multiqc/multiqc_report.html", "normalised", "normalised/quantile_normalised", @@ -728,53 +650,33 @@ "warnings" ], [ - "all_genes_summary.csv:md5,50ab37894673a3ff7e7b9cdf70038616", - "custom_content_multiqc_config.yaml:md5,e048085491cb74658cf363545b1278fe", - "section_1.most_stable_genes_summary.csv:md5,574a24ab5764c4084a03a43665efdfeb", - "section_1.most_stable_genes_transposed_counts.csv:md5,f951d9c40133ae0eec2c1592e27c9e01", - "section_10.most_stable_genes_summary.csv:md5,7192f72f608ad9741b213679dc28937c", - "section_10.most_stable_genes_transposed_counts.csv:md5,b8fbfd01d8ba5eba5e4b0f77ae3039e0", - "section_11.most_stable_genes_summary.csv:md5,288d33ee6cb4e5f30a53078c8f0e8a3a", - "section_11.most_stable_genes_transposed_counts.csv:md5,c07f4d994881730e357516b7711085c8", - "section_12.most_stable_genes_summary.csv:md5,63a6e5293e968b73f34fa6fe04ce5a7c", - "section_12.most_stable_genes_transposed_counts.csv:md5,54bf16cc1b84d8c3e6147c347ea19747", - "section_13.most_stable_genes_summary.csv:md5,f5a0871521572851601550dea5b6abb5", - "section_13.most_stable_genes_transposed_counts.csv:md5,5f6857a2334ba3f30f35d3223d9965ac", - "section_14.most_stable_genes_summary.csv:md5,4b5169a450a787855427aef0ec52348e", - "section_14.most_stable_genes_transposed_counts.csv:md5,a33fa8b001d43aed1c4ab77250b3cc7a", - "section_15.most_stable_genes_summary.csv:md5,bf792e95cf332e1c17587b4fbaebdcfb", - "section_15.most_stable_genes_transposed_counts.csv:md5,404bd099df6631b9a6c292edc0ab7ed2", - "section_16.most_stable_genes_summary.csv:md5,280f21317a5993d6e8fce796c63040d5", - "section_16.most_stable_genes_transposed_counts.csv:md5,a88ac2ef0471041f8d4ce3471c591192", - "section_17.most_stable_genes_summary.csv:md5,8a971c43f72f9d19124920fc39e68d46", - "section_17.most_stable_genes_transposed_counts.csv:md5,38b0d132084d5aa1f32b02a9448f66c3", - "section_18.most_stable_genes_summary.csv:md5,9481961b11d8386ea013d4fbbcab9ce9", - "section_18.most_stable_genes_transposed_counts.csv:md5,b08d66dbe529a0038a09cd6c435a604c", - "section_19.most_stable_genes_summary.csv:md5,d6ebc49aba6db637c09e973b7e2a1cd4", - "section_19.most_stable_genes_transposed_counts.csv:md5,3e13b4a9e1564e1b23106f7b5b6588ae", - "section_2.most_stable_genes_summary.csv:md5,4fa8e287cb65fcc13a18995973a44d1e", - "section_2.most_stable_genes_transposed_counts.csv:md5,3bce723d7b67560b14352acef626775e", - "section_20.most_stable_genes_summary.csv:md5,41b8421059ca95352617184211753e86", - "section_20.most_stable_genes_transposed_counts.csv:md5,f3715dd47e78d261c38339135703cf12", - "section_3.most_stable_genes_summary.csv:md5,42b235930a27a23e803667fdde064488", - "section_3.most_stable_genes_transposed_counts.csv:md5,df41c6dbece0d4885440ec392ffa261d", - "section_4.most_stable_genes_summary.csv:md5,21360b4a811c29224f2d79a7cdb42059", - "section_4.most_stable_genes_transposed_counts.csv:md5,e49241be359433067b5fc3c747e57030", - "section_5.most_stable_genes_summary.csv:md5,393bb0c32166eb09857e8e4d78c53cea", - "section_5.most_stable_genes_transposed_counts.csv:md5,fd09fa61f02c8721d09cd11dacf7ffe4", - "section_6.most_stable_genes_summary.csv:md5,34b575768b6d23a7154c021be5062a99", - "section_6.most_stable_genes_transposed_counts.csv:md5,c5773c2ff340782d1a3acdfc50a133d3", - "section_7.most_stable_genes_summary.csv:md5,414dd8b188f9dd88acc5b53964a10c6b", - "section_7.most_stable_genes_transposed_counts.csv:md5,2b1460cc2c6cd34a1637754fd17d7eec", - "section_8.most_stable_genes_summary.csv:md5,f8835325014d5adc54e3b794edfb4771", - "section_8.most_stable_genes_transposed_counts.csv:md5,7deab925d9006a6f9df005476520f4b7", - "section_9.most_stable_genes_summary.csv:md5,93cdb58ce05f2acc7732f272405a3937", - "section_9.most_stable_genes_transposed_counts.csv:md5,f2e698d07a70f870c06bab83786ab04c", + "all_genes_summary.csv:md5,94c9e0ac43a69c2c60ccdc657690788a", + "custom_content_multiqc_config.yaml:md5,d06ac9dfa6f18df6bcf46181c267ddab", + "section_1.most_stable_genes_summary.csv:md5,38ce440df20a4979a21e10bc85316156", + "section_1.most_stable_genes_transposed_counts.csv:md5,0a2efcbb26a6e4d83c6894298797d35a", + "section_10.most_stable_genes_summary.csv:md5,f0dd7783c9bd7556ddc501c3b39afe2b", + "section_10.most_stable_genes_transposed_counts.csv:md5,8ebaee335e467a23abd41b808d5e4bd2", + "section_2.most_stable_genes_summary.csv:md5,8a4c81c221e58150a5fc97d32b4caa89", + "section_2.most_stable_genes_transposed_counts.csv:md5,5b1a325ebf0639e603b770a7d3dc309e", + "section_3.most_stable_genes_summary.csv:md5,d263ca1c5a153eda933c732149efa7a6", + "section_3.most_stable_genes_transposed_counts.csv:md5,9ba861e07999e3f9cb6ae221e9632cd0", + "section_4.most_stable_genes_summary.csv:md5,f4052c45e13ac09c86732353aa1b5d1e", + "section_4.most_stable_genes_transposed_counts.csv:md5,e7cf310c23bee1201cb332d1e5979366", + "section_5.most_stable_genes_summary.csv:md5,17e9590c412953a6bbeed4219377df52", + "section_5.most_stable_genes_transposed_counts.csv:md5,be0288f2cabc0dd4851f292441fd4ae1", + "section_6.most_stable_genes_summary.csv:md5,81b0964288cac2a3ae347041dee1ec86", + "section_6.most_stable_genes_transposed_counts.csv:md5,58741b54e8640ad89c32e113cea9f2f0", + "section_7.most_stable_genes_summary.csv:md5,20bd8baa6e2750ad127eb4620be96964", + "section_7.most_stable_genes_transposed_counts.csv:md5,fd95f28f1cf131f9daa180b24a89827f", + "section_8.most_stable_genes_summary.csv:md5,e23a77987c18099ec8677e5d3e2c59de", + "section_8.most_stable_genes_transposed_counts.csv:md5,176e31a01353c4413e38a765595daa2c", + "section_9.most_stable_genes_summary.csv:md5,d788b8b1211a5188a5e882a4a244c887", + "section_9.most_stable_genes_transposed_counts.csv:md5,ec7678cf6c82265452388f32ac520ae7", "style.css:md5,e6ba182eaf06980dbda49920efbf6e64", - "all_genes_summary.csv:md5,50ab37894673a3ff7e7b9cdf70038616", + "all_genes_summary.csv:md5,94c9e0ac43a69c2c60ccdc657690788a", "whole_design.csv:md5,e6b2a08b65fa02b470829a652593e161", "environment.yml:md5,dd081780e1f98d34b13289d019f8bb5b", - "Prunus_persica.Prunus_persica_NCBIv2.62.chr.gff3.gz:md5,a333b20996b221f18e1c25aebd1c89f1", + "Prunus_persica.Prunus_persica_NCBIv2.63.chr.gff3.gz:md5,b6503b872c8f9f6ee573f9910450a12b", "gene_transcript_lengths.csv:md5,e9376e922e381f3b52fd0cfa4ba95605", "global_gene_id_mapping.csv:md5,dddb3e3dfbd118a6152837df2160b3a8", "global_gene_metadata.csv:md5,8a93b691384b34e7d2cc30781532f952", @@ -784,48 +686,28 @@ "multiqc_citations.txt:md5,4c806e63a283ec1b7e78cdae3a923d4f", "multiqc_eatlas_all_experiments_metadata.txt:md5,e3c379628a87ad8b3f1e5cfe7310fcb0", "multiqc_eatlas_selected_experiments_metadata.txt:md5,e3c379628a87ad8b3f1e5cfe7310fcb0", - "multiqc_gene_statistics.txt:md5,5acdc3e3c5ee949585746122042e3a95", - "multiqc_genes_section_1.txt:md5,3c48edce816118087fad975c3b2e150e", - "multiqc_genes_section_1_1.txt:md5,60962ac96142f6d818e6e552e49acfbf", - "multiqc_genes_section_1_10.txt:md5,8b5656d0384954be77d68b52b352c274", - "multiqc_genes_section_1_11.txt:md5,291d6d3087e97955aed29c49c8212ead", - "multiqc_genes_section_1_12.txt:md5,91698e69c64018fd72957c490f7ff3ff", - "multiqc_genes_section_1_13.txt:md5,9871fd84ac2bad8f740ce5aa42097db4", - "multiqc_genes_section_1_14.txt:md5,4ecd956786bd45a8412c72421b0ba071", - "multiqc_genes_section_1_15.txt:md5,7c84424999bcbb32f93898dcbdcfc2c3", - "multiqc_genes_section_1_16.txt:md5,bfc047dce5c21deca584138e89c6c993", - "multiqc_genes_section_1_17.txt:md5,167a36544d5cd92e9a178e92b91b2f42", - "multiqc_genes_section_1_18.txt:md5,f41528e9d8a43b4184ab64d2f17bb52a", - "multiqc_genes_section_1_19.txt:md5,2b8ae5d9a6f2562a29e153325c0813ae", - "multiqc_genes_section_1_2.txt:md5,6d5d700f547ed93498b75ca9d7e3a8b6", - "multiqc_genes_section_1_3.txt:md5,9d9d88b1065e6b7337b14683d08e6247", - "multiqc_genes_section_1_4.txt:md5,0aa0e21163e065cef0d5cdc437f23fbd", - "multiqc_genes_section_1_5.txt:md5,06b5f26e442498b658106df4239a2bf9", - "multiqc_genes_section_1_6.txt:md5,04be4ff16ce543c2bf6b40f4686fb46b", - "multiqc_genes_section_1_7.txt:md5,6a88f35e493baf1409ea9590f4f33e8e", - "multiqc_genes_section_1_8.txt:md5,fc195cb44c051684ac8a04bc42f1d563", - "multiqc_genes_section_1_9.txt:md5,fbfe2930503e42809f25fa1d8022d554", + "multiqc_gene_statistics.txt:md5,c99f7253f790b05a2b4e40b4f0eb6924", + "multiqc_genes_section_1.txt:md5,4c1cdc566345d859ac55becd58702f5b", + "multiqc_genes_section_1_1.txt:md5,792c42de3270bb6b4e96e3d9d0b18014", + "multiqc_genes_section_1_2.txt:md5,9e5445c3427bf78d23e629517fe03bd4", + "multiqc_genes_section_1_3.txt:md5,298d2da4679901b9aec21a14588bd754", + "multiqc_genes_section_1_4.txt:md5,52ed282c2e3a762d053e59f3379fb9e3", + "multiqc_genes_section_1_5.txt:md5,84b5ac5920b12d3eba318eeafae5e0cc", + "multiqc_genes_section_1_6.txt:md5,6f634c11c9810babf1d21bc813acac59", + "multiqc_genes_section_1_7.txt:md5,fc893d1e9819abf637d2afc652d91647", + "multiqc_genes_section_1_8.txt:md5,26864dd829936feaf9275c88fb0a1f3c", + "multiqc_genes_section_1_9.txt:md5,6daea6cad644c3278b2c82fed56b78a7", "multiqc_id_mapping_stats.txt:md5,eebd614817761551497a4210022da830", - "multiqc_normalised_expr_distrib_section_1.txt:md5,643038ea4a668569e988bd0aac4a53e0", - "multiqc_normalised_expr_distrib_section_1_1.txt:md5,e78c321fe74010ffc43e1a24699c63c5", - "multiqc_normalised_expr_distrib_section_1_10.txt:md5,c6362429c6f181bb42c874a7a01f9704", - "multiqc_normalised_expr_distrib_section_1_11.txt:md5,adda3b5049d3444aace2ce78381d7df0", - "multiqc_normalised_expr_distrib_section_1_12.txt:md5,71d7deda66c9084a5f28e27061d66f58", - "multiqc_normalised_expr_distrib_section_1_13.txt:md5,0517c3cd42512d6d6d9da151cafd5ef9", - "multiqc_normalised_expr_distrib_section_1_14.txt:md5,6ddb07bfcb9c80045847b9f392cc49e5", - "multiqc_normalised_expr_distrib_section_1_15.txt:md5,17dce6dc28fab7606a9664249575a9a8", - "multiqc_normalised_expr_distrib_section_1_16.txt:md5,289b63cd2b4ed35780597b3db595a506", - "multiqc_normalised_expr_distrib_section_1_17.txt:md5,02bdf8ead4c248f5fcb0f80837d01140", - "multiqc_normalised_expr_distrib_section_1_18.txt:md5,2f8835d4cf0ecc6cdff09368f511aceb", - "multiqc_normalised_expr_distrib_section_1_19.txt:md5,d3ca94b2b22de241043d0dc8427cd916", - "multiqc_normalised_expr_distrib_section_1_2.txt:md5,c67b04d423c08f50abb7aded61e3fee8", - "multiqc_normalised_expr_distrib_section_1_3.txt:md5,bf5750a74ede44bebb3820bab622a932", - "multiqc_normalised_expr_distrib_section_1_4.txt:md5,6223117ebef835bd7f17e5a39015f97e", - "multiqc_normalised_expr_distrib_section_1_5.txt:md5,ab5ef1ab638a16b554baa16711f2fee4", - "multiqc_normalised_expr_distrib_section_1_6.txt:md5,42231476381c9522d4abef2219b3a376", - "multiqc_normalised_expr_distrib_section_1_7.txt:md5,c8cf57807b257529733df840084fab80", - "multiqc_normalised_expr_distrib_section_1_8.txt:md5,2291b32d9fc682a4bd8f7e74f181304f", - "multiqc_normalised_expr_distrib_section_1_9.txt:md5,88f2fd190de04ea355afdedd03184068", + "multiqc_normalised_expr_distrib_section_1.txt:md5,64246c5cfe95c607706e016add963798", + "multiqc_normalised_expr_distrib_section_1_1.txt:md5,d9c9d33da4901548cdb821a9a59ab08b", + "multiqc_normalised_expr_distrib_section_1_2.txt:md5,d72da2688dfc98da37959c93b8b06c07", + "multiqc_normalised_expr_distrib_section_1_3.txt:md5,ef2737d17ddefb755e2847e5ca7aa247", + "multiqc_normalised_expr_distrib_section_1_4.txt:md5,687a95c477d277adeacc7e7915d9784f", + "multiqc_normalised_expr_distrib_section_1_5.txt:md5,7bf6e5d3316c00f92746fbdfba563651", + "multiqc_normalised_expr_distrib_section_1_6.txt:md5,ab782f81b49372a4e5c9944a626b6a9a", + "multiqc_normalised_expr_distrib_section_1_7.txt:md5,6df40a7e9a5e4f9a931f500c203d9ab2", + "multiqc_normalised_expr_distrib_section_1_8.txt:md5,7c3cdc1759977181daff37f23b0ccb30", + "multiqc_normalised_expr_distrib_section_1_9.txt:md5,2f8835d4cf0ecc6cdff09368f511aceb", "multiqc_null_values_filter.txt:md5,9f39dde761d2be72b989b3da51d9b768", "multiqc_ratio_nulls.txt:md5,fd9acca0d6995183d30b6ef2489a596e", "multiqc_ratio_zeros.txt:md5,7de1385d524ab670ffa9ddaf4cb8735b", @@ -844,11 +726,11 @@ "zero_values_filter_stats.csv:md5,a6fdf3c5250dc46a43f79a9ec5a1355d" ] ], + "timestamp": "2026-06-18T17:31:31.588408269", "meta": { - "nf-test": "0.9.3", - "nextflow": "25.10.4" - }, - "timestamp": "2026-04-16T11:45:04.163764784" + "nf-test": "0.9.5", + "nextflow": "26.04.3" + } }, "-profile test_accessions_only": { "content": [ @@ -894,11 +776,11 @@ "species_experiments.metadata.tsv:md5,2af519969d9c77cc74d92723ee171c48" ] ], + "timestamp": "2026-04-16T11:58:55.484363676", "meta": { "nf-test": "0.9.3", "nextflow": "25.10.4" - }, - "timestamp": "2026-04-16T11:58:55.484363676" + } }, "-profile test_one_accession_low_gene_count": { "content": [ @@ -925,7 +807,7 @@ "python": "3.13.7" }, "COMPUTE_M_MEASURE": { - "polars": "1.39.2", + "polars": "1.41.2", "python": "3.14.3" }, "COMPUTE_STABILITY_SCORES": { @@ -1044,28 +926,8 @@ "aggregated/section_1.most_stable_genes_transposed_counts.csv", "aggregated/section_10.most_stable_genes_summary.csv", "aggregated/section_10.most_stable_genes_transposed_counts.csv", - "aggregated/section_11.most_stable_genes_summary.csv", - "aggregated/section_11.most_stable_genes_transposed_counts.csv", - "aggregated/section_12.most_stable_genes_summary.csv", - "aggregated/section_12.most_stable_genes_transposed_counts.csv", - "aggregated/section_13.most_stable_genes_summary.csv", - "aggregated/section_13.most_stable_genes_transposed_counts.csv", - "aggregated/section_14.most_stable_genes_summary.csv", - "aggregated/section_14.most_stable_genes_transposed_counts.csv", - "aggregated/section_15.most_stable_genes_summary.csv", - "aggregated/section_15.most_stable_genes_transposed_counts.csv", - "aggregated/section_16.most_stable_genes_summary.csv", - "aggregated/section_16.most_stable_genes_transposed_counts.csv", - "aggregated/section_17.most_stable_genes_summary.csv", - "aggregated/section_17.most_stable_genes_transposed_counts.csv", - "aggregated/section_18.most_stable_genes_summary.csv", - "aggregated/section_18.most_stable_genes_transposed_counts.csv", - "aggregated/section_19.most_stable_genes_summary.csv", - "aggregated/section_19.most_stable_genes_transposed_counts.csv", "aggregated/section_2.most_stable_genes_summary.csv", "aggregated/section_2.most_stable_genes_transposed_counts.csv", - "aggregated/section_20.most_stable_genes_summary.csv", - "aggregated/section_20.most_stable_genes_transposed_counts.csv", "aggregated/section_3.most_stable_genes_summary.csv", "aggregated/section_3.most_stable_genes_transposed_counts.csv", "aggregated/section_4.most_stable_genes_summary.csv", @@ -1111,7 +973,7 @@ "dash_app/src/utils/style.py", "errors", "gene_length", - "gene_length/Arabidopsis_thaliana.TAIR10.62.gff3.gz", + "gene_length/Arabidopsis_thaliana.TAIR10.63.gff3.gz", "gene_length/gene_transcript_lengths.csv", "idmapping", "idmapping/global_gene_id_mapping.csv", @@ -1121,8 +983,11 @@ "idmapping/gprofiler/mapped_gene_ids.csv", "idmapping/renamed", "idmapping/renamed/E_GEOD_51720_rnaseq.rnaseq.raw.counts.cleaned.renamed.parquet", - "merged_datasets", - "merged_datasets/whole_design.csv", + "merged_counts", + "merged_counts/all_counts.parquet", + "merged_data", + "merged_data/all_counts.missing_values_imputed.parquet", + "merged_data/whole_design.csv", "multiqc", "multiqc/multiqc_data", "multiqc/multiqc_data/llms-full.txt", @@ -1133,16 +998,6 @@ "multiqc/multiqc_data/multiqc_gene_statistics.txt", "multiqc/multiqc_data/multiqc_genes_section_1.txt", "multiqc/multiqc_data/multiqc_genes_section_1_1.txt", - "multiqc/multiqc_data/multiqc_genes_section_1_10.txt", - "multiqc/multiqc_data/multiqc_genes_section_1_11.txt", - "multiqc/multiqc_data/multiqc_genes_section_1_12.txt", - "multiqc/multiqc_data/multiqc_genes_section_1_13.txt", - "multiqc/multiqc_data/multiqc_genes_section_1_14.txt", - "multiqc/multiqc_data/multiqc_genes_section_1_15.txt", - "multiqc/multiqc_data/multiqc_genes_section_1_16.txt", - "multiqc/multiqc_data/multiqc_genes_section_1_17.txt", - "multiqc/multiqc_data/multiqc_genes_section_1_18.txt", - "multiqc/multiqc_data/multiqc_genes_section_1_19.txt", "multiqc/multiqc_data/multiqc_genes_section_1_2.txt", "multiqc/multiqc_data/multiqc_genes_section_1_3.txt", "multiqc/multiqc_data/multiqc_genes_section_1_4.txt", @@ -1154,16 +1009,6 @@ "multiqc/multiqc_data/multiqc_id_mapping_stats.txt", "multiqc/multiqc_data/multiqc_normalised_expr_distrib_section_1.txt", "multiqc/multiqc_data/multiqc_normalised_expr_distrib_section_1_1.txt", - "multiqc/multiqc_data/multiqc_normalised_expr_distrib_section_1_10.txt", - "multiqc/multiqc_data/multiqc_normalised_expr_distrib_section_1_11.txt", - "multiqc/multiqc_data/multiqc_normalised_expr_distrib_section_1_12.txt", - "multiqc/multiqc_data/multiqc_normalised_expr_distrib_section_1_13.txt", - "multiqc/multiqc_data/multiqc_normalised_expr_distrib_section_1_14.txt", - "multiqc/multiqc_data/multiqc_normalised_expr_distrib_section_1_15.txt", - "multiqc/multiqc_data/multiqc_normalised_expr_distrib_section_1_16.txt", - "multiqc/multiqc_data/multiqc_normalised_expr_distrib_section_1_17.txt", - "multiqc/multiqc_data/multiqc_normalised_expr_distrib_section_1_18.txt", - "multiqc/multiqc_data/multiqc_normalised_expr_distrib_section_1_19.txt", "multiqc/multiqc_data/multiqc_normalised_expr_distrib_section_1_2.txt", "multiqc/multiqc_data/multiqc_normalised_expr_distrib_section_1_3.txt", "multiqc/multiqc_data/multiqc_normalised_expr_distrib_section_1_4.txt", @@ -1182,14 +1027,41 @@ "multiqc/multiqc_data/multiqc_zero_values_filter.txt", "multiqc/multiqc_plots", "multiqc/multiqc_plots/pdf", + "multiqc/multiqc_plots/pdf/gene_statistics.pdf", "multiqc/multiqc_plots/pdf/genes_section_1.pdf", + "multiqc/multiqc_plots/pdf/id_mapping_stats-cnt.pdf", + "multiqc/multiqc_plots/pdf/id_mapping_stats-pct.pdf", "multiqc/multiqc_plots/pdf/normalised_expr_distrib_section_1.pdf", + "multiqc/multiqc_plots/pdf/null_values_filter.pdf", + "multiqc/multiqc_plots/pdf/ratio_nulls.pdf", + "multiqc/multiqc_plots/pdf/ratio_zeros.pdf", + "multiqc/multiqc_plots/pdf/skewness.pdf", + "multiqc/multiqc_plots/pdf/total_gene_id_occurrence_quantiles.pdf", + "multiqc/multiqc_plots/pdf/zero_values_filter.pdf", "multiqc/multiqc_plots/png", + "multiqc/multiqc_plots/png/gene_statistics.png", "multiqc/multiqc_plots/png/genes_section_1.png", + "multiqc/multiqc_plots/png/id_mapping_stats-cnt.png", + "multiqc/multiqc_plots/png/id_mapping_stats-pct.png", "multiqc/multiqc_plots/png/normalised_expr_distrib_section_1.png", + "multiqc/multiqc_plots/png/null_values_filter.png", + "multiqc/multiqc_plots/png/ratio_nulls.png", + "multiqc/multiqc_plots/png/ratio_zeros.png", + "multiqc/multiqc_plots/png/skewness.png", + "multiqc/multiqc_plots/png/total_gene_id_occurrence_quantiles.png", + "multiqc/multiqc_plots/png/zero_values_filter.png", "multiqc/multiqc_plots/svg", + "multiqc/multiqc_plots/svg/gene_statistics.svg", "multiqc/multiqc_plots/svg/genes_section_1.svg", + "multiqc/multiqc_plots/svg/id_mapping_stats-cnt.svg", + "multiqc/multiqc_plots/svg/id_mapping_stats-pct.svg", "multiqc/multiqc_plots/svg/normalised_expr_distrib_section_1.svg", + "multiqc/multiqc_plots/svg/null_values_filter.svg", + "multiqc/multiqc_plots/svg/ratio_nulls.svg", + "multiqc/multiqc_plots/svg/ratio_zeros.svg", + "multiqc/multiqc_plots/svg/skewness.svg", + "multiqc/multiqc_plots/svg/total_gene_id_occurrence_quantiles.svg", + "multiqc/multiqc_plots/svg/zero_values_filter.svg", "multiqc/multiqc_report.html", "normalised", "normalised/quantile_normalised", @@ -1216,53 +1088,33 @@ "warnings" ], [ - "all_genes_summary.csv:md5,643bb1aa5f128bad6f192bd2aeaa2ee6", - "custom_content_multiqc_config.yaml:md5,e048085491cb74658cf363545b1278fe", - "section_1.most_stable_genes_summary.csv:md5,911c1c687cdc308f5aecaef42d504a89", - "section_1.most_stable_genes_transposed_counts.csv:md5,849135e7f42258dd2975d74f136d23aa", - "section_10.most_stable_genes_summary.csv:md5,131be639b26c51537ec05d67258a2820", - "section_10.most_stable_genes_transposed_counts.csv:md5,aa8748ba5cab4cb2387a616326d82023", - "section_11.most_stable_genes_summary.csv:md5,6e363a28b0762735cdf575f6aec3fb54", - "section_11.most_stable_genes_transposed_counts.csv:md5,705e2b4becb685f21490948f648cee0a", - "section_12.most_stable_genes_summary.csv:md5,6e49cbc5af4a45fcd62f9a9c9d1c82ad", - "section_12.most_stable_genes_transposed_counts.csv:md5,a757cf115a30079e4dea9ebe44e587d5", - "section_13.most_stable_genes_summary.csv:md5,6765ae522f95e29af34c118c36464510", - "section_13.most_stable_genes_transposed_counts.csv:md5,578d598340aa36cf38852e06e619190a", - "section_14.most_stable_genes_summary.csv:md5,dba0d2e1803d588bbc213896ea143d56", - "section_14.most_stable_genes_transposed_counts.csv:md5,53f8590e2ddfbbc80e1e72516f5b821a", - "section_15.most_stable_genes_summary.csv:md5,1ff8d851ef7bceecb1bb96111cf42ed9", - "section_15.most_stable_genes_transposed_counts.csv:md5,2f1987c6e0327610cfaf3b5ac4b17c99", - "section_16.most_stable_genes_summary.csv:md5,22a67ebb023441a8428b8d9277c237f7", - "section_16.most_stable_genes_transposed_counts.csv:md5,467d69d7581c7b2d008b6a69004775f2", - "section_17.most_stable_genes_summary.csv:md5,e5cbc51cfe86c7b2225804410d30665b", - "section_17.most_stable_genes_transposed_counts.csv:md5,d758e3e9e4274ff7815af4fa9f84154d", - "section_18.most_stable_genes_summary.csv:md5,828dd90d5c39cf1b714e2804dd7b8d84", - "section_18.most_stable_genes_transposed_counts.csv:md5,2f633511784b3babc159c4ecfed76fa2", - "section_19.most_stable_genes_summary.csv:md5,b32ed5d4a50671ac38a4a616dc81b2b9", - "section_19.most_stable_genes_transposed_counts.csv:md5,b507a8bbe8e2d3852e7952e932917751", - "section_2.most_stable_genes_summary.csv:md5,439d0e60a30d7232508e695a210053c5", - "section_2.most_stable_genes_transposed_counts.csv:md5,a1803a9577616d7a098ad1567817cb20", - "section_20.most_stable_genes_summary.csv:md5,0d82b5d34b415947bdda4d016fa52f71", - "section_20.most_stable_genes_transposed_counts.csv:md5,3a1ae07c51acb0a1672e210a8a137121", - "section_3.most_stable_genes_summary.csv:md5,1ade5c406fe691b48a7f6b56b4778971", - "section_3.most_stable_genes_transposed_counts.csv:md5,71d9e444731c709189ed569ada9be4c1", - "section_4.most_stable_genes_summary.csv:md5,aa1216a538b2723ac246fd336b8a3fcb", - "section_4.most_stable_genes_transposed_counts.csv:md5,8bd766e3232e4f7591cba721cbf305dc", - "section_5.most_stable_genes_summary.csv:md5,84e099dbe057240baa5542e035214362", - "section_5.most_stable_genes_transposed_counts.csv:md5,180382fc6c81bc94032fb592425d1596", - "section_6.most_stable_genes_summary.csv:md5,e455df268552dbede82debdaff7f2bb5", - "section_6.most_stable_genes_transposed_counts.csv:md5,da8bc59c611f88c51b047f6ccb50d08b", - "section_7.most_stable_genes_summary.csv:md5,ef6db8ade4ffd92d0ef872b8e4c88417", - "section_7.most_stable_genes_transposed_counts.csv:md5,b1d1db3949dd5a07ea45baf10c184d05", - "section_8.most_stable_genes_summary.csv:md5,911c809c86111dc0597a953cbfa26d62", - "section_8.most_stable_genes_transposed_counts.csv:md5,337a0e231598d45291a6a42a25c585b1", - "section_9.most_stable_genes_summary.csv:md5,cfaafcd65fffaed8169835cfc0992430", - "section_9.most_stable_genes_transposed_counts.csv:md5,cdb7220619e76d11963f1f1b08101e42", + "all_genes_summary.csv:md5,1bc386c5bce0cd457765bd94fbd150a7", + "custom_content_multiqc_config.yaml:md5,d06ac9dfa6f18df6bcf46181c267ddab", + "section_1.most_stable_genes_summary.csv:md5,97cda6ff1ffc66124a6a83bbe9f255d8", + "section_1.most_stable_genes_transposed_counts.csv:md5,2302a7e828783d4ce89b46e80adc8d84", + "section_10.most_stable_genes_summary.csv:md5,facd8c570b3e9a5ce6af4de92157d17e", + "section_10.most_stable_genes_transposed_counts.csv:md5,cf87014273ef2158f055468d790ac5ea", + "section_2.most_stable_genes_summary.csv:md5,984a5bdd7a913cacf02ede9037d8ecf3", + "section_2.most_stable_genes_transposed_counts.csv:md5,7c7e541fe6f2957fc6f815d6030447c8", + "section_3.most_stable_genes_summary.csv:md5,592cd0d98504f82d0265dc529085df1f", + "section_3.most_stable_genes_transposed_counts.csv:md5,1bb45be135b340b24f7c015268b1b05d", + "section_4.most_stable_genes_summary.csv:md5,6b5d3ea7dd9069ada07be944383d55e9", + "section_4.most_stable_genes_transposed_counts.csv:md5,e3da14b0bdd20ce88a0fc36c5de4e51b", + "section_5.most_stable_genes_summary.csv:md5,68de5611fa0a63f8f78bc27dd1ce66b6", + "section_5.most_stable_genes_transposed_counts.csv:md5,4013f23eee41462b86cd685bc17087ce", + "section_6.most_stable_genes_summary.csv:md5,1063996857de807fab21143cf8a31227", + "section_6.most_stable_genes_transposed_counts.csv:md5,9d6aa20d12bf2b6e1213993067bf0d4b", + "section_7.most_stable_genes_summary.csv:md5,ce271248af7410ff2a9d920008ede923", + "section_7.most_stable_genes_transposed_counts.csv:md5,6b58a44db420f6d21cdf45b4d9793680", + "section_8.most_stable_genes_summary.csv:md5,a56e2759399a23aed3407f5dc3e5ae12", + "section_8.most_stable_genes_transposed_counts.csv:md5,3a497a88645195b5932eff28da8f1d32", + "section_9.most_stable_genes_summary.csv:md5,24fcd2d6f426023c9d979a3e82283f50", + "section_9.most_stable_genes_transposed_counts.csv:md5,7973ae9d8da4db4655d5f9e45d4f9c9e", "style.css:md5,e6ba182eaf06980dbda49920efbf6e64", - "all_genes_summary.csv:md5,643bb1aa5f128bad6f192bd2aeaa2ee6", + "all_genes_summary.csv:md5,1bc386c5bce0cd457765bd94fbd150a7", "whole_design.csv:md5,d3aa542c4ad07d0051a84482fe6cd81c", "environment.yml:md5,dd081780e1f98d34b13289d019f8bb5b", - "Arabidopsis_thaliana.TAIR10.62.gff3.gz:md5,b02566c301d47461db70747b3adaa6ce", + "Arabidopsis_thaliana.TAIR10.63.gff3.gz:md5,ee02d70eb655f0440af19a3f3f40b15c", "gene_transcript_lengths.csv:md5,06b4612031f4f300a6d67f36e7625492", "global_gene_id_mapping.csv:md5,42491ef436cce231258c0358e1af5745", "global_gene_metadata.csv:md5,b35e20500269d4e6787ef1a3468f16bc", @@ -1270,48 +1122,28 @@ "mapped_gene_ids.csv:md5,42491ef436cce231258c0358e1af5745", "whole_design.csv:md5,d3aa542c4ad07d0051a84482fe6cd81c", "multiqc_citations.txt:md5,4c806e63a283ec1b7e78cdae3a923d4f", - "multiqc_gene_statistics.txt:md5,53fe105326f1a097d3437731eb4e3a8d", - "multiqc_genes_section_1.txt:md5,cb79085a6608e6dfd5a96291dcea850b", - "multiqc_genes_section_1_1.txt:md5,7308dd2805d9b530457a1eb839e1b455", - "multiqc_genes_section_1_10.txt:md5,91e61a6a01bdf35096fb02f79476dd58", - "multiqc_genes_section_1_11.txt:md5,f0b8df84a99b2d5ef557ee8896217095", - "multiqc_genes_section_1_12.txt:md5,89e8c3dcd3d970735de56ed6dd618caf", - "multiqc_genes_section_1_13.txt:md5,b7b1b4265c236ba1c8ed7358e34a6dd6", - "multiqc_genes_section_1_14.txt:md5,831514e662296f82a3f0370ae64b1503", - "multiqc_genes_section_1_15.txt:md5,92aa9a142514894d965ce5f41bee781d", - "multiqc_genes_section_1_16.txt:md5,e905ff948cccf03b24177517e39078ad", - "multiqc_genes_section_1_17.txt:md5,920067a6137cbded388b393f4a84d0bf", - "multiqc_genes_section_1_18.txt:md5,e46e3add55d144e8dc04087498b73b65", - "multiqc_genes_section_1_19.txt:md5,72e10039958b0d2667136688b35411cf", - "multiqc_genes_section_1_2.txt:md5,210eff8a16470b70dd186c52aa218512", - "multiqc_genes_section_1_3.txt:md5,15f3d0a57e714b176361689eece78b90", - "multiqc_genes_section_1_4.txt:md5,36cb183f89030a540dc51f83fe0073c4", - "multiqc_genes_section_1_5.txt:md5,6bd50c3d3040facf83fb70d3aad70caf", - "multiqc_genes_section_1_6.txt:md5,420fee370865219de09913c9eb827a49", - "multiqc_genes_section_1_7.txt:md5,fb4c14faf2e007704f1fcb21949deb2d", - "multiqc_genes_section_1_8.txt:md5,df2f893d352fc6992f8d95e18f30a1e4", - "multiqc_genes_section_1_9.txt:md5,75c27fc9730c4346074c667cc8d1c885", + "multiqc_gene_statistics.txt:md5,da08a978948259a32ce2bcfbf9541dd0", + "multiqc_genes_section_1.txt:md5,937d9ce57a0963fccbd6f14d6551db1d", + "multiqc_genes_section_1_1.txt:md5,0cc498951e3cc0b91770894b21c2d667", + "multiqc_genes_section_1_2.txt:md5,039b68c69548d1fc2fb481d5726c4f6c", + "multiqc_genes_section_1_3.txt:md5,fb1e99608cc4074995813c5c1430ba80", + "multiqc_genes_section_1_4.txt:md5,37a5ee2d9f25bbda442ae5cd5a610ba0", + "multiqc_genes_section_1_5.txt:md5,8950a5ec6ad7257b6bb41c3cea5cf1b9", + "multiqc_genes_section_1_6.txt:md5,58aa7c7c49f81a30b618162b11e96e53", + "multiqc_genes_section_1_7.txt:md5,361f924e9a7c70617795dc23ff3e1c91", + "multiqc_genes_section_1_8.txt:md5,0d6295d4a4ea7d74b2649f4dbebd9789", + "multiqc_genes_section_1_9.txt:md5,1d95c1814d532a3edbd65260482cc700", "multiqc_id_mapping_stats.txt:md5,49023d9842e01da40e2c50e9659802d5", - "multiqc_normalised_expr_distrib_section_1.txt:md5,9e50c1075664481653bb278323672633", - "multiqc_normalised_expr_distrib_section_1_1.txt:md5,a1fa5d657a142abbf49fb95bf266d906", - "multiqc_normalised_expr_distrib_section_1_10.txt:md5,f89a15a3af0047f9bd0f5d01ca9ccb33", - "multiqc_normalised_expr_distrib_section_1_11.txt:md5,fead0770f22c316593d6d2353d94e9f7", - "multiqc_normalised_expr_distrib_section_1_12.txt:md5,8cacaee9d1bedf3ec8a4d66f3bab1f7f", - "multiqc_normalised_expr_distrib_section_1_13.txt:md5,2567a9943c1c49e575b4c2fe6a3a3185", - "multiqc_normalised_expr_distrib_section_1_14.txt:md5,02d40fd44721ec46f59736221500078a", - "multiqc_normalised_expr_distrib_section_1_15.txt:md5,0c89badaf4e435df8526ae8e9f4802ab", - "multiqc_normalised_expr_distrib_section_1_16.txt:md5,3fe2b8ffacda4c1f8ca761eb7a1e1086", - "multiqc_normalised_expr_distrib_section_1_17.txt:md5,c86c0cf8c3e4eab7a61979f622f126d7", - "multiqc_normalised_expr_distrib_section_1_18.txt:md5,17554bf8a45621ecdedefe2a9b79835e", - "multiqc_normalised_expr_distrib_section_1_19.txt:md5,28b90411fa811ba678f237e9ee6f20a2", - "multiqc_normalised_expr_distrib_section_1_2.txt:md5,b3876970c55302cb37f1bd8f8ca620ee", - "multiqc_normalised_expr_distrib_section_1_3.txt:md5,2ead25fe7da0f48beca784882fabb1a6", - "multiqc_normalised_expr_distrib_section_1_4.txt:md5,68245ac492b42288c310612a5e88cbe4", - "multiqc_normalised_expr_distrib_section_1_5.txt:md5,ac5f414686facdfc71016982d3824875", - "multiqc_normalised_expr_distrib_section_1_6.txt:md5,88d20ad256f42e564daf79ca8c13a1a2", - "multiqc_normalised_expr_distrib_section_1_7.txt:md5,4cb4700660dd2613194c7b62324d019b", - "multiqc_normalised_expr_distrib_section_1_8.txt:md5,43eb422269b358c59e2d31f9602b24b3", - "multiqc_normalised_expr_distrib_section_1_9.txt:md5,d444233cf608c17cfdc7cc8ebf2c2fe9", + "multiqc_normalised_expr_distrib_section_1.txt:md5,844c1ef9f358b4051897698293ca6dab", + "multiqc_normalised_expr_distrib_section_1_1.txt:md5,497e14e81938bb4bedb9e2d9758b4e4c", + "multiqc_normalised_expr_distrib_section_1_2.txt:md5,424d1381b060787e36329bc426b6e6e8", + "multiqc_normalised_expr_distrib_section_1_3.txt:md5,7519b35cd531fa258e37164f33a6b21d", + "multiqc_normalised_expr_distrib_section_1_4.txt:md5,9c2d6732b306057707e4baa7e517e1f0", + "multiqc_normalised_expr_distrib_section_1_5.txt:md5,17778a66446dfa37b81b0691abe703f7", + "multiqc_normalised_expr_distrib_section_1_6.txt:md5,8cacaee9d1bedf3ec8a4d66f3bab1f7f", + "multiqc_normalised_expr_distrib_section_1_7.txt:md5,02d40fd44721ec46f59736221500078a", + "multiqc_normalised_expr_distrib_section_1_8.txt:md5,3fe2b8ffacda4c1f8ca761eb7a1e1086", + "multiqc_normalised_expr_distrib_section_1_9.txt:md5,17554bf8a45621ecdedefe2a9b79835e", "multiqc_null_values_filter.txt:md5,91eb32460cdebb4e08ae0b1ee559cf59", "multiqc_ratio_nulls.txt:md5,bcf9aa423c404f2e7f8ea84735810959", "multiqc_ratio_zeros.txt:md5,c743a773da2858b59923eff1873c26d0", @@ -1327,11 +1159,11 @@ "zero_values_filter_stats.csv:md5,766d888e41179e8a785f634b3b606bc9" ] ], + "timestamp": "2026-06-18T18:06:59.147862162", "meta": { "nf-test": "0.9.5", - "nextflow": "25.10.4" - }, - "timestamp": "2026-04-05T09:30:42.794565916" + "nextflow": "26.04.3" + } }, "-profile test_public_and_dataset": { "content": [ @@ -1343,28 +1175,8 @@ "aggregated/section_1.most_stable_genes_transposed_counts.csv", "aggregated/section_10.most_stable_genes_summary.csv", "aggregated/section_10.most_stable_genes_transposed_counts.csv", - "aggregated/section_11.most_stable_genes_summary.csv", - "aggregated/section_11.most_stable_genes_transposed_counts.csv", - "aggregated/section_12.most_stable_genes_summary.csv", - "aggregated/section_12.most_stable_genes_transposed_counts.csv", - "aggregated/section_13.most_stable_genes_summary.csv", - "aggregated/section_13.most_stable_genes_transposed_counts.csv", - "aggregated/section_14.most_stable_genes_summary.csv", - "aggregated/section_14.most_stable_genes_transposed_counts.csv", - "aggregated/section_15.most_stable_genes_summary.csv", - "aggregated/section_15.most_stable_genes_transposed_counts.csv", - "aggregated/section_16.most_stable_genes_summary.csv", - "aggregated/section_16.most_stable_genes_transposed_counts.csv", - "aggregated/section_17.most_stable_genes_summary.csv", - "aggregated/section_17.most_stable_genes_transposed_counts.csv", - "aggregated/section_18.most_stable_genes_summary.csv", - "aggregated/section_18.most_stable_genes_transposed_counts.csv", - "aggregated/section_19.most_stable_genes_summary.csv", - "aggregated/section_19.most_stable_genes_transposed_counts.csv", "aggregated/section_2.most_stable_genes_summary.csv", "aggregated/section_2.most_stable_genes_transposed_counts.csv", - "aggregated/section_20.most_stable_genes_summary.csv", - "aggregated/section_20.most_stable_genes_transposed_counts.csv", "aggregated/section_3.most_stable_genes_summary.csv", "aggregated/section_3.most_stable_genes_transposed_counts.csv", "aggregated/section_4.most_stable_genes_summary.csv", @@ -1410,7 +1222,7 @@ "dash_app/src/utils/style.py", "errors", "gene_length", - "gene_length/Beta_vulgaris.RefBeet-1.2.2.62.gff3.gz", + "gene_length/Beta_vulgaris.RefBeet-1.2.2.63.gff3.gz", "gene_length/gene_transcript_lengths.csv", "idmapping", "idmapping/global_gene_id_mapping.csv", @@ -1421,8 +1233,11 @@ "idmapping/renamed", "idmapping/renamed/E_MTAB_8187_rnaseq.rnaseq.raw.counts.cleaned.renamed.parquet", "idmapping/renamed/beta_vulgaris.rnaseq.raw.counts.cleaned.renamed.parquet", - "merged_datasets", - "merged_datasets/whole_design.csv", + "merged_counts", + "merged_counts/all_counts.parquet", + "merged_data", + "merged_data/all_counts.missing_values_imputed.parquet", + "merged_data/whole_design.csv", "multiqc", "multiqc/multiqc_data", "multiqc/multiqc_data/llms-full.txt", @@ -1435,16 +1250,6 @@ "multiqc/multiqc_data/multiqc_gene_statistics.txt", "multiqc/multiqc_data/multiqc_genes_section_1.txt", "multiqc/multiqc_data/multiqc_genes_section_1_1.txt", - "multiqc/multiqc_data/multiqc_genes_section_1_10.txt", - "multiqc/multiqc_data/multiqc_genes_section_1_11.txt", - "multiqc/multiqc_data/multiqc_genes_section_1_12.txt", - "multiqc/multiqc_data/multiqc_genes_section_1_13.txt", - "multiqc/multiqc_data/multiqc_genes_section_1_14.txt", - "multiqc/multiqc_data/multiqc_genes_section_1_15.txt", - "multiqc/multiqc_data/multiqc_genes_section_1_16.txt", - "multiqc/multiqc_data/multiqc_genes_section_1_17.txt", - "multiqc/multiqc_data/multiqc_genes_section_1_18.txt", - "multiqc/multiqc_data/multiqc_genes_section_1_19.txt", "multiqc/multiqc_data/multiqc_genes_section_1_2.txt", "multiqc/multiqc_data/multiqc_genes_section_1_3.txt", "multiqc/multiqc_data/multiqc_genes_section_1_4.txt", @@ -1456,16 +1261,6 @@ "multiqc/multiqc_data/multiqc_id_mapping_stats.txt", "multiqc/multiqc_data/multiqc_normalised_expr_distrib_section_1.txt", "multiqc/multiqc_data/multiqc_normalised_expr_distrib_section_1_1.txt", - "multiqc/multiqc_data/multiqc_normalised_expr_distrib_section_1_10.txt", - "multiqc/multiqc_data/multiqc_normalised_expr_distrib_section_1_11.txt", - "multiqc/multiqc_data/multiqc_normalised_expr_distrib_section_1_12.txt", - "multiqc/multiqc_data/multiqc_normalised_expr_distrib_section_1_13.txt", - "multiqc/multiqc_data/multiqc_normalised_expr_distrib_section_1_14.txt", - "multiqc/multiqc_data/multiqc_normalised_expr_distrib_section_1_15.txt", - "multiqc/multiqc_data/multiqc_normalised_expr_distrib_section_1_16.txt", - "multiqc/multiqc_data/multiqc_normalised_expr_distrib_section_1_17.txt", - "multiqc/multiqc_data/multiqc_normalised_expr_distrib_section_1_18.txt", - "multiqc/multiqc_data/multiqc_normalised_expr_distrib_section_1_19.txt", "multiqc/multiqc_data/multiqc_normalised_expr_distrib_section_1_2.txt", "multiqc/multiqc_data/multiqc_normalised_expr_distrib_section_1_3.txt", "multiqc/multiqc_data/multiqc_normalised_expr_distrib_section_1_4.txt", @@ -1484,14 +1279,47 @@ "multiqc/multiqc_data/multiqc_zero_values_filter.txt", "multiqc/multiqc_plots", "multiqc/multiqc_plots/pdf", + "multiqc/multiqc_plots/pdf/eatlas_all_experiments_metadata.pdf", + "multiqc/multiqc_plots/pdf/eatlas_selected_experiments_metadata.pdf", + "multiqc/multiqc_plots/pdf/gene_statistics.pdf", "multiqc/multiqc_plots/pdf/genes_section_1.pdf", + "multiqc/multiqc_plots/pdf/id_mapping_stats-cnt.pdf", + "multiqc/multiqc_plots/pdf/id_mapping_stats-pct.pdf", "multiqc/multiqc_plots/pdf/normalised_expr_distrib_section_1.pdf", + "multiqc/multiqc_plots/pdf/null_values_filter.pdf", + "multiqc/multiqc_plots/pdf/ratio_nulls.pdf", + "multiqc/multiqc_plots/pdf/ratio_zeros.pdf", + "multiqc/multiqc_plots/pdf/skewness.pdf", + "multiqc/multiqc_plots/pdf/total_gene_id_occurrence_quantiles.pdf", + "multiqc/multiqc_plots/pdf/zero_values_filter.pdf", "multiqc/multiqc_plots/png", + "multiqc/multiqc_plots/png/eatlas_all_experiments_metadata.png", + "multiqc/multiqc_plots/png/eatlas_selected_experiments_metadata.png", + "multiqc/multiqc_plots/png/gene_statistics.png", "multiqc/multiqc_plots/png/genes_section_1.png", + "multiqc/multiqc_plots/png/id_mapping_stats-cnt.png", + "multiqc/multiqc_plots/png/id_mapping_stats-pct.png", "multiqc/multiqc_plots/png/normalised_expr_distrib_section_1.png", + "multiqc/multiqc_plots/png/null_values_filter.png", + "multiqc/multiqc_plots/png/ratio_nulls.png", + "multiqc/multiqc_plots/png/ratio_zeros.png", + "multiqc/multiqc_plots/png/skewness.png", + "multiqc/multiqc_plots/png/total_gene_id_occurrence_quantiles.png", + "multiqc/multiqc_plots/png/zero_values_filter.png", "multiqc/multiqc_plots/svg", + "multiqc/multiqc_plots/svg/eatlas_all_experiments_metadata.svg", + "multiqc/multiqc_plots/svg/eatlas_selected_experiments_metadata.svg", + "multiqc/multiqc_plots/svg/gene_statistics.svg", "multiqc/multiqc_plots/svg/genes_section_1.svg", + "multiqc/multiqc_plots/svg/id_mapping_stats-cnt.svg", + "multiqc/multiqc_plots/svg/id_mapping_stats-pct.svg", "multiqc/multiqc_plots/svg/normalised_expr_distrib_section_1.svg", + "multiqc/multiqc_plots/svg/null_values_filter.svg", + "multiqc/multiqc_plots/svg/ratio_nulls.svg", + "multiqc/multiqc_plots/svg/ratio_zeros.svg", + "multiqc/multiqc_plots/svg/skewness.svg", + "multiqc/multiqc_plots/svg/total_gene_id_occurrence_quantiles.svg", + "multiqc/multiqc_plots/svg/zero_values_filter.svg", "multiqc/multiqc_report.html", "normalised", "normalised/quantile_normalised", @@ -1522,53 +1350,33 @@ "warnings" ], [ - "all_genes_summary.csv:md5,e3f8d59accf267c351d0a995ffc9ebf5", - "custom_content_multiqc_config.yaml:md5,e048085491cb74658cf363545b1278fe", - "section_1.most_stable_genes_summary.csv:md5,be640cd7efc6a7ac3df989b9ab9a6448", - "section_1.most_stable_genes_transposed_counts.csv:md5,8363bc69b84c68fe4ecea13b6dc70d98", - "section_10.most_stable_genes_summary.csv:md5,41c3ba1e338277e40e03c9b043059cb0", - "section_10.most_stable_genes_transposed_counts.csv:md5,4a599908cea31077650911161a4fd155", - "section_11.most_stable_genes_summary.csv:md5,136e636de09496412dc76ef7fb10c47b", - "section_11.most_stable_genes_transposed_counts.csv:md5,9aeb482d2ff0cbfaa8d29a5af4357701", - "section_12.most_stable_genes_summary.csv:md5,c27fb0df29ac4fb3bea8df3fbb6ef2b1", - "section_12.most_stable_genes_transposed_counts.csv:md5,edbe661b7c150c1a8af01c3c52ea45f7", - "section_13.most_stable_genes_summary.csv:md5,0395eed958d9571fae34ae29b8fe643e", - "section_13.most_stable_genes_transposed_counts.csv:md5,3ece34d50b412abddbce5da5c05f10de", - "section_14.most_stable_genes_summary.csv:md5,8677aa89331f67690330becf078260e3", - "section_14.most_stable_genes_transposed_counts.csv:md5,15840cc29d8d27881b59f19804134f97", - "section_15.most_stable_genes_summary.csv:md5,182e3a6e3a855340c50b5d2705b84142", - "section_15.most_stable_genes_transposed_counts.csv:md5,8a4c0d3018f3ed87305b4cafa8d3a7ae", - "section_16.most_stable_genes_summary.csv:md5,6c41bed8aea0f1cfa973ae7dfc93a148", - "section_16.most_stable_genes_transposed_counts.csv:md5,e3196137992a40340e20cb46ebd5cbdd", - "section_17.most_stable_genes_summary.csv:md5,f4aaec1b2af2e89bf26c156b907097e8", - "section_17.most_stable_genes_transposed_counts.csv:md5,af06eab6bc04fc315544fcd0176da4cd", - "section_18.most_stable_genes_summary.csv:md5,5f21148626ed40d0d64b393babcf160d", - "section_18.most_stable_genes_transposed_counts.csv:md5,29fc2248ad428cb3ac8898b0a5471eec", - "section_19.most_stable_genes_summary.csv:md5,5acc2a1b1980004f88c0584a8cf0784e", - "section_19.most_stable_genes_transposed_counts.csv:md5,9586c452f93c486ed667fb343af3b13c", - "section_2.most_stable_genes_summary.csv:md5,95e986dad2f0232070aa47079b6465c1", - "section_2.most_stable_genes_transposed_counts.csv:md5,b22984d5b00ee4540fca59b5585a0a88", - "section_20.most_stable_genes_summary.csv:md5,9d9c5cd95d1d1a350a8d1f2ce363f882", - "section_20.most_stable_genes_transposed_counts.csv:md5,e9f4187bdc7079c3130bdff1e4ebf575", - "section_3.most_stable_genes_summary.csv:md5,7825d8dbcfd1c4e5a4e4ca42268d4ea8", - "section_3.most_stable_genes_transposed_counts.csv:md5,77d118556692fe285590489db96f47d0", - "section_4.most_stable_genes_summary.csv:md5,221b0d42881ada7cd7fcca65cdc827a4", - "section_4.most_stable_genes_transposed_counts.csv:md5,5d1d9ebe8151765fb37176c86f3c7812", - "section_5.most_stable_genes_summary.csv:md5,a3c3edb5fd3cf852185531a4adcd9fd9", - "section_5.most_stable_genes_transposed_counts.csv:md5,51289b18ac41641114892519d2e494a6", - "section_6.most_stable_genes_summary.csv:md5,5a7baf9eadb389cc234808d56ee6fdfe", - "section_6.most_stable_genes_transposed_counts.csv:md5,bb1cddda97df3915d2aad5973e1c8a16", - "section_7.most_stable_genes_summary.csv:md5,a1ed63a57844d1bce998eea23714f071", - "section_7.most_stable_genes_transposed_counts.csv:md5,82c59e866871569fbde316efea5e7ea3", - "section_8.most_stable_genes_summary.csv:md5,40673407e734107f0cebf2045023155a", - "section_8.most_stable_genes_transposed_counts.csv:md5,0bfb8031fc91115a61a57113a6df5c4d", - "section_9.most_stable_genes_summary.csv:md5,7178bb75b1733f71d0aeba2a09750b3b", - "section_9.most_stable_genes_transposed_counts.csv:md5,b02e0d31ed2c0fa925060893062c07a7", + "all_genes_summary.csv:md5,88e5683d9a62c68d37a83539cea98b26", + "custom_content_multiqc_config.yaml:md5,d06ac9dfa6f18df6bcf46181c267ddab", + "section_1.most_stable_genes_summary.csv:md5,23f2eba50ad940141e78e4157f5fc664", + "section_1.most_stable_genes_transposed_counts.csv:md5,a5e4cf25fd23e2db590ecebfd2a873d1", + "section_10.most_stable_genes_summary.csv:md5,08ad704dad4091c24dfb8373b000b200", + "section_10.most_stable_genes_transposed_counts.csv:md5,c8a7652dfd135f2aa2eef44ca727c3e7", + "section_2.most_stable_genes_summary.csv:md5,8af5973d138e4093d5917ba41f89fb4b", + "section_2.most_stable_genes_transposed_counts.csv:md5,c5dea7d3b7332e6a957520c2511b8f69", + "section_3.most_stable_genes_summary.csv:md5,a8a7a09dc86785a99ca61b9f1ccab3dd", + "section_3.most_stable_genes_transposed_counts.csv:md5,3daa0394616acafddaa88c628a17b898", + "section_4.most_stable_genes_summary.csv:md5,7a1706a296db373989b586c605cbbadc", + "section_4.most_stable_genes_transposed_counts.csv:md5,a6edf473bf43c256c41dd04600799c14", + "section_5.most_stable_genes_summary.csv:md5,207b4e632d20613d210244b3c4e7523b", + "section_5.most_stable_genes_transposed_counts.csv:md5,906441df1853d9956f35ad5af509f84a", + "section_6.most_stable_genes_summary.csv:md5,d4eeb1370ddb0f5e651d88af95514659", + "section_6.most_stable_genes_transposed_counts.csv:md5,70d2a4b13784667f5b3cd5a32ddd03db", + "section_7.most_stable_genes_summary.csv:md5,547b50cbd6d155944ba234f266a0bd22", + "section_7.most_stable_genes_transposed_counts.csv:md5,e30cdd4f7e37df2686b108030d6d7baf", + "section_8.most_stable_genes_summary.csv:md5,138eae8f1fcd96f941dd0b2ed112ccc5", + "section_8.most_stable_genes_transposed_counts.csv:md5,6accdf8ad8f8378b8a0682f4f7f7a597", + "section_9.most_stable_genes_summary.csv:md5,478cbd082296f1e776885835c3fdbc6b", + "section_9.most_stable_genes_transposed_counts.csv:md5,a9a457a095c132bae09e8779af945b62", "style.css:md5,e6ba182eaf06980dbda49920efbf6e64", - "all_genes_summary.csv:md5,e3f8d59accf267c351d0a995ffc9ebf5", + "all_genes_summary.csv:md5,88e5683d9a62c68d37a83539cea98b26", "whole_design.csv:md5,fbd18d011d7d855452e5a30a303afcbf", "environment.yml:md5,dd081780e1f98d34b13289d019f8bb5b", - "Beta_vulgaris.RefBeet-1.2.2.62.gff3.gz:md5,6f2c45809441c8776e6578000db2b0e4", + "Beta_vulgaris.RefBeet-1.2.2.63.gff3.gz:md5,e711481dc9292c4b7c6422b9b4dc7d9d", "gene_transcript_lengths.csv:md5,458c7dfd3598bdcbcb6ceb76ccba189f", "global_gene_id_mapping.csv:md5,7eecbd2d88adaf5f213f238a72d28b99", "global_gene_metadata.csv:md5,cc8d4afdbaf03cd39a4e10f2a9040b7e", @@ -1578,48 +1386,28 @@ "multiqc_citations.txt:md5,4c806e63a283ec1b7e78cdae3a923d4f", "multiqc_eatlas_all_experiments_metadata.txt:md5,6ea661253a55d41687e32fea72961063", "multiqc_eatlas_selected_experiments_metadata.txt:md5,8b7643e0ef8eaaa3fa72f7103fd7ccee", - "multiqc_gene_statistics.txt:md5,d7750cb95663a63219dcec94e03d7af1", - "multiqc_genes_section_1.txt:md5,f310a16068d5e76713497e2d3824cf2d", - "multiqc_genes_section_1_1.txt:md5,d68c3cce20e06aaf226e88e0e52184b3", - "multiqc_genes_section_1_10.txt:md5,304bd44c0867a1419e7b48e5bb6dff05", - "multiqc_genes_section_1_11.txt:md5,807ad09f10e257546f18e5fb052511e9", - "multiqc_genes_section_1_12.txt:md5,e3d5acc5a292639bc3a1b1b5e7f5a04b", - "multiqc_genes_section_1_13.txt:md5,7dd72d333b12fc101f4a5b555e09d49a", - "multiqc_genes_section_1_14.txt:md5,59d0addf52e85cdf7d0163721c29c095", - "multiqc_genes_section_1_15.txt:md5,b10474b0ad8cd3cdf21dbe8dc4fd3676", - "multiqc_genes_section_1_16.txt:md5,6f038b7c99db654f2d749da25f7c213b", - "multiqc_genes_section_1_17.txt:md5,9f9f97f85d6605978b286942ac69ba2c", - "multiqc_genes_section_1_18.txt:md5,ab6c6e6e1a658ba92baa6dd2b68f56bf", - "multiqc_genes_section_1_19.txt:md5,5d4910983359e122e07fdbe2aeda10f7", - "multiqc_genes_section_1_2.txt:md5,89b5e91c54815bd340411210fb7b86a7", - "multiqc_genes_section_1_3.txt:md5,94130719e096ffd035a155aa59b4bdd0", - "multiqc_genes_section_1_4.txt:md5,ba0275140b46c0c2d2690304bfd008d8", - "multiqc_genes_section_1_5.txt:md5,fcdcb0618858bf79586f679f4834f902", - "multiqc_genes_section_1_6.txt:md5,9cf7cebccab8b0073cad3d43d4d2ef92", - "multiqc_genes_section_1_7.txt:md5,d440bc9cce034ba82dd0d9f3387f9094", - "multiqc_genes_section_1_8.txt:md5,dc1f5de798343036301a059b545a378f", - "multiqc_genes_section_1_9.txt:md5,e9402e81e8c32c8a6b4015c4a55962f0", + "multiqc_gene_statistics.txt:md5,3b1adf5ef95c58c0c40e185cf2d97a70", + "multiqc_genes_section_1.txt:md5,e3273e4f60c81932e55ace4d7c05b78c", + "multiqc_genes_section_1_1.txt:md5,eabf3d9c7e88d2cfd3afa9ee0d6cf50c", + "multiqc_genes_section_1_2.txt:md5,a92d6f1618c08611ad01e8e9e8e247dc", + "multiqc_genes_section_1_3.txt:md5,f50ae8ceb8bb2f2bba9b7d11afb1f18e", + "multiqc_genes_section_1_4.txt:md5,f6335c8566ace507f185067812c94451", + "multiqc_genes_section_1_5.txt:md5,353915e8385577dfa125fc8f93fb1924", + "multiqc_genes_section_1_6.txt:md5,c7f4ff37052cf9501253010af45ce7bd", + "multiqc_genes_section_1_7.txt:md5,93cbbd5baa9859e74dc34e718ceff027", + "multiqc_genes_section_1_8.txt:md5,c09ff4e1ed27d900bdf47f0d096c2f3b", + "multiqc_genes_section_1_9.txt:md5,ac78528b913709594e2c02e76251192e", "multiqc_id_mapping_stats.txt:md5,d7c6d500c8ea91c32da4980b5557d15e", - "multiqc_normalised_expr_distrib_section_1.txt:md5,fe7c9f8eff636a38deee18a05e17ed4d", - "multiqc_normalised_expr_distrib_section_1_1.txt:md5,7578a930f8750ecb56e892a54211e28f", - "multiqc_normalised_expr_distrib_section_1_10.txt:md5,696c5b24d54057e4738bbd0b351c5d28", - "multiqc_normalised_expr_distrib_section_1_11.txt:md5,94ef2626cd23a3395ba0f53be43b529e", - "multiqc_normalised_expr_distrib_section_1_12.txt:md5,cf62d3846d7d00b438719e75551bd3fa", - "multiqc_normalised_expr_distrib_section_1_13.txt:md5,825766b14187d801ae2284dffd562ac4", - "multiqc_normalised_expr_distrib_section_1_14.txt:md5,b18a4df24ed61f0315d41d4cddfd6539", - "multiqc_normalised_expr_distrib_section_1_15.txt:md5,4d99b3d87c9a25b18fa5ed2061dfb71c", - "multiqc_normalised_expr_distrib_section_1_16.txt:md5,82305a3ca8a54e44a558d0c83dfca9f3", - "multiqc_normalised_expr_distrib_section_1_17.txt:md5,adf99bc87dd29499a1bfc50c3c26488c", - "multiqc_normalised_expr_distrib_section_1_18.txt:md5,8b64cbab2e0cca85575b18b41f973aa5", - "multiqc_normalised_expr_distrib_section_1_19.txt:md5,4544499f66cd9de554f2d26944028cd5", - "multiqc_normalised_expr_distrib_section_1_2.txt:md5,d74f1b40545293b2dba02a0ff167119d", - "multiqc_normalised_expr_distrib_section_1_3.txt:md5,e5701cd16921b4ce657ac131418e04d1", - "multiqc_normalised_expr_distrib_section_1_4.txt:md5,fd093b2d0d535ff16ba846bde129f690", - "multiqc_normalised_expr_distrib_section_1_5.txt:md5,4dbddb8d44680d3cc45a3053c510ca2d", - "multiqc_normalised_expr_distrib_section_1_6.txt:md5,497c20bb2f2d2c03595c897f30775411", - "multiqc_normalised_expr_distrib_section_1_7.txt:md5,5c3fb8ff5e1b90d0a9904712204fc36d", - "multiqc_normalised_expr_distrib_section_1_8.txt:md5,9e5d9c6fb87d348a893bfed6b24f01ce", - "multiqc_normalised_expr_distrib_section_1_9.txt:md5,6a40889210cec540d4b3a2e903454003", + "multiqc_normalised_expr_distrib_section_1.txt:md5,ca5d7149e7570d1ecf9c2897ecc552e4", + "multiqc_normalised_expr_distrib_section_1_1.txt:md5,4646dac8ca1f9b4f2fbba3d873916d00", + "multiqc_normalised_expr_distrib_section_1_2.txt:md5,ca5671131afe6f14bcd496a0aadb0cb3", + "multiqc_normalised_expr_distrib_section_1_3.txt:md5,d0ba56529939bba2c66e016a0f0a6046", + "multiqc_normalised_expr_distrib_section_1_4.txt:md5,fdc1a1746f2b3289f1178948553ec6bd", + "multiqc_normalised_expr_distrib_section_1_5.txt:md5,2f5ef99dece553f7696760329d0c7bd6", + "multiqc_normalised_expr_distrib_section_1_6.txt:md5,4f0e881f406c1ba87c28717f5c09ede8", + "multiqc_normalised_expr_distrib_section_1_7.txt:md5,b1425c40932ddf69c46b43cdf26f364f", + "multiqc_normalised_expr_distrib_section_1_8.txt:md5,254f1e9f71b0690da8624e30d88b1a84", + "multiqc_normalised_expr_distrib_section_1_9.txt:md5,8b64cbab2e0cca85575b18b41f973aa5", "multiqc_null_values_filter.txt:md5,88b2d9e16cd8ab52f58a48fd5d915b8c", "multiqc_ratio_nulls.txt:md5,c9ac04a67937c7bacfebc33fcd50aab1", "multiqc_ratio_zeros.txt:md5,9f50cd64ea4afe3723c7e222182981f6", @@ -1638,11 +1426,11 @@ "zero_values_filter_stats.csv:md5,17fc6d525450d34445bf9cc25defe18a" ] ], + "timestamp": "2026-06-18T17:59:16.584703544", "meta": { - "nf-test": "0.9.3", - "nextflow": "25.10.4" - }, - "timestamp": "2026-04-16T11:58:29.889348049" + "nf-test": "0.9.5", + "nextflow": "26.04.3" + } }, "-profile test_download_only": { "content": [ @@ -1695,10 +1483,10 @@ "E_MTAB_5309_rnaseq.rnaseq.raw.counts.csv:md5,5c45a59ce7fbc59e5784f40dfb8c3b71" ] ], + "timestamp": "2026-04-16T11:59:27.717850311", "meta": { "nf-test": "0.9.3", "nextflow": "25.10.4" - }, - "timestamp": "2026-04-16T11:59:27.717850311" + } } } \ No newline at end of file diff --git a/tests/modules/local/aggregate_results/main.nf.test.snap b/tests/modules/local/aggregate_results/main.nf.test.snap index bfa2a9aa..7529a69f 100644 --- a/tests/modules/local/aggregate_results/main.nf.test.snap +++ b/tests/modules/local/aggregate_results/main.nf.test.snap @@ -3,18 +3,18 @@ "content": [ { "0": [ - "all_genes_summary.csv:md5,67da835eca8de21309e7b3ec0f6a31f7" + "all_genes_summary.csv:md5,3a16cde6f60003b478202bb3ddd7ea32" ], "1": [ [ - "section_1.most_stable_genes_summary.csv:md5,a4c693ec5ae3f4e0e5313811dd96fa21", - "section_2.most_stable_genes_summary.csv:md5,1c33432a2576231c821e52424113a65b" + "section_1.most_stable_genes_summary.csv:md5,542b219460ec57fb81130046625fb297", + "section_2.most_stable_genes_summary.csv:md5,e901728d1736cc7a31a837409d6e1829" ] ], "2": [ [ - "section_1.most_stable_genes_transposed_counts.csv:md5,30f84570c2104f7cfac4289d583b68cd", - "section_2.most_stable_genes_transposed_counts.csv:md5,3ffbb8370e2bdd0c1867610a51405260" + "section_1.most_stable_genes_transposed_counts.csv:md5,67d8ff94a2724dc2982edf17cd9c660d", + "section_2.most_stable_genes_transposed_counts.csv:md5,1e0068dc0f56eff7103c3cfae2a8a46b" ] ], "3": [ @@ -42,47 +42,47 @@ ] ], "all_genes_summary": [ - "all_genes_summary.csv:md5,67da835eca8de21309e7b3ec0f6a31f7" + "all_genes_summary.csv:md5,3a16cde6f60003b478202bb3ddd7ea32" ], "custom_content_multiqc_config": [ "custom_content_multiqc_config.yaml:md5,edf372668919bebe05783bc16995c5c4" ], "most_stable_genes_summary": [ [ - "section_1.most_stable_genes_summary.csv:md5,a4c693ec5ae3f4e0e5313811dd96fa21", - "section_2.most_stable_genes_summary.csv:md5,1c33432a2576231c821e52424113a65b" + "section_1.most_stable_genes_summary.csv:md5,542b219460ec57fb81130046625fb297", + "section_2.most_stable_genes_summary.csv:md5,e901728d1736cc7a31a837409d6e1829" ] ], "most_stable_genes_transposed_counts_filtered": [ [ - "section_1.most_stable_genes_transposed_counts.csv:md5,30f84570c2104f7cfac4289d583b68cd", - "section_2.most_stable_genes_transposed_counts.csv:md5,3ffbb8370e2bdd0c1867610a51405260" + "section_1.most_stable_genes_transposed_counts.csv:md5,67d8ff94a2724dc2982edf17cd9c660d", + "section_2.most_stable_genes_transposed_counts.csv:md5,1e0068dc0f56eff7103c3cfae2a8a46b" ] ] } ], + "timestamp": "2026-06-16T15:40:35.527804728", "meta": { - "nf-test": "0.9.3", - "nextflow": "25.10.4" - }, - "timestamp": "2026-04-04T09:38:02.365611798" + "nf-test": "0.9.5", + "nextflow": "26.04.3" + } }, "Without microarray": { "content": [ { "0": [ - "all_genes_summary.csv:md5,62a7b6ba136e4e2f7ab954386a6fbe5e" + "all_genes_summary.csv:md5,a63c6d701804d0ea0a2371e7a05e3e67" ], "1": [ [ - "section_1.most_stable_genes_summary.csv:md5,8f75c2b1041d3cea08f13dfa05378a78", - "section_2.most_stable_genes_summary.csv:md5,edc6b56e2f4710c490906cd8c9a54790" + "section_1.most_stable_genes_summary.csv:md5,81dc31ef8d7b0d08f91fbad010373891", + "section_2.most_stable_genes_summary.csv:md5,dcf66398d549acc8301ccbb718015c01" ] ], "2": [ [ - "section_1.most_stable_genes_transposed_counts.csv:md5,30f84570c2104f7cfac4289d583b68cd", - "section_2.most_stable_genes_transposed_counts.csv:md5,3ffbb8370e2bdd0c1867610a51405260" + "section_1.most_stable_genes_transposed_counts.csv:md5,67d8ff94a2724dc2982edf17cd9c660d", + "section_2.most_stable_genes_transposed_counts.csv:md5,1e0068dc0f56eff7103c3cfae2a8a46b" ] ], "3": [ @@ -110,47 +110,47 @@ ] ], "all_genes_summary": [ - "all_genes_summary.csv:md5,62a7b6ba136e4e2f7ab954386a6fbe5e" + "all_genes_summary.csv:md5,a63c6d701804d0ea0a2371e7a05e3e67" ], "custom_content_multiqc_config": [ "custom_content_multiqc_config.yaml:md5,3b4d962847a26bdc7c0fa34c4fcff168" ], "most_stable_genes_summary": [ [ - "section_1.most_stable_genes_summary.csv:md5,8f75c2b1041d3cea08f13dfa05378a78", - "section_2.most_stable_genes_summary.csv:md5,edc6b56e2f4710c490906cd8c9a54790" + "section_1.most_stable_genes_summary.csv:md5,81dc31ef8d7b0d08f91fbad010373891", + "section_2.most_stable_genes_summary.csv:md5,dcf66398d549acc8301ccbb718015c01" ] ], "most_stable_genes_transposed_counts_filtered": [ [ - "section_1.most_stable_genes_transposed_counts.csv:md5,30f84570c2104f7cfac4289d583b68cd", - "section_2.most_stable_genes_transposed_counts.csv:md5,3ffbb8370e2bdd0c1867610a51405260" + "section_1.most_stable_genes_transposed_counts.csv:md5,67d8ff94a2724dc2982edf17cd9c660d", + "section_2.most_stable_genes_transposed_counts.csv:md5,1e0068dc0f56eff7103c3cfae2a8a46b" ] ] } ], + "timestamp": "2026-06-16T15:40:17.55580834", "meta": { - "nf-test": "0.9.3", - "nextflow": "25.10.4" - }, - "timestamp": "2026-03-30T14:06:37.615799808" + "nf-test": "0.9.5", + "nextflow": "26.04.3" + } }, "One invalid target gene": { "content": [ { "0": [ - "all_genes_summary.csv:md5,67da835eca8de21309e7b3ec0f6a31f7" + "all_genes_summary.csv:md5,3a16cde6f60003b478202bb3ddd7ea32" ], "1": [ [ - "section_1.most_stable_genes_summary.csv:md5,a4c693ec5ae3f4e0e5313811dd96fa21", - "section_2.most_stable_genes_summary.csv:md5,1c33432a2576231c821e52424113a65b" + "section_1.most_stable_genes_summary.csv:md5,542b219460ec57fb81130046625fb297", + "section_2.most_stable_genes_summary.csv:md5,e901728d1736cc7a31a837409d6e1829" ] ], "2": [ [ - "section_1.most_stable_genes_transposed_counts.csv:md5,30f84570c2104f7cfac4289d583b68cd", - "section_2.most_stable_genes_transposed_counts.csv:md5,3ffbb8370e2bdd0c1867610a51405260" + "section_1.most_stable_genes_transposed_counts.csv:md5,67d8ff94a2724dc2982edf17cd9c660d", + "section_2.most_stable_genes_transposed_counts.csv:md5,1e0068dc0f56eff7103c3cfae2a8a46b" ] ], "3": [ @@ -178,42 +178,42 @@ ] ], "all_genes_summary": [ - "all_genes_summary.csv:md5,67da835eca8de21309e7b3ec0f6a31f7" + "all_genes_summary.csv:md5,3a16cde6f60003b478202bb3ddd7ea32" ], "custom_content_multiqc_config": [ "custom_content_multiqc_config.yaml:md5,401b9b35a47e29a8dfac3ca7700e26bd" ], "most_stable_genes_summary": [ [ - "section_1.most_stable_genes_summary.csv:md5,a4c693ec5ae3f4e0e5313811dd96fa21", - "section_2.most_stable_genes_summary.csv:md5,1c33432a2576231c821e52424113a65b" + "section_1.most_stable_genes_summary.csv:md5,542b219460ec57fb81130046625fb297", + "section_2.most_stable_genes_summary.csv:md5,e901728d1736cc7a31a837409d6e1829" ] ], "most_stable_genes_transposed_counts_filtered": [ [ - "section_1.most_stable_genes_transposed_counts.csv:md5,30f84570c2104f7cfac4289d583b68cd", - "section_2.most_stable_genes_transposed_counts.csv:md5,3ffbb8370e2bdd0c1867610a51405260" + "section_1.most_stable_genes_transposed_counts.csv:md5,67d8ff94a2724dc2982edf17cd9c660d", + "section_2.most_stable_genes_transposed_counts.csv:md5,1e0068dc0f56eff7103c3cfae2a8a46b" ] ] } ], + "timestamp": "2026-06-16T15:40:44.846750227", "meta": { - "nf-test": "0.9.3", - "nextflow": "25.10.4" - }, - "timestamp": "2026-03-30T14:47:07.501875225" + "nf-test": "0.9.5", + "nextflow": "26.04.3" + } }, "One section": { "content": [ { "0": [ - "all_genes_summary.csv:md5,d2d279f4c5243b3af01130ca04b5603d" + "all_genes_summary.csv:md5,71d2e6411951cf65b7035a5eceac4d3e" ], "1": [ - "section_1.most_stable_genes_summary.csv:md5,8f75c2b1041d3cea08f13dfa05378a78" + "section_1.most_stable_genes_summary.csv:md5,81dc31ef8d7b0d08f91fbad010373891" ], "2": [ - "section_1.most_stable_genes_transposed_counts.csv:md5,30f84570c2104f7cfac4289d583b68cd" + "section_1.most_stable_genes_transposed_counts.csv:md5,67d8ff94a2724dc2982edf17cd9c660d" ], "3": [ "custom_content_multiqc_config.yaml:md5,4941e220852b2c814302f508cf5837cd" @@ -240,41 +240,41 @@ ] ], "all_genes_summary": [ - "all_genes_summary.csv:md5,d2d279f4c5243b3af01130ca04b5603d" + "all_genes_summary.csv:md5,71d2e6411951cf65b7035a5eceac4d3e" ], "custom_content_multiqc_config": [ "custom_content_multiqc_config.yaml:md5,4941e220852b2c814302f508cf5837cd" ], "most_stable_genes_summary": [ - "section_1.most_stable_genes_summary.csv:md5,8f75c2b1041d3cea08f13dfa05378a78" + "section_1.most_stable_genes_summary.csv:md5,81dc31ef8d7b0d08f91fbad010373891" ], "most_stable_genes_transposed_counts_filtered": [ - "section_1.most_stable_genes_transposed_counts.csv:md5,30f84570c2104f7cfac4289d583b68cd" + "section_1.most_stable_genes_transposed_counts.csv:md5,67d8ff94a2724dc2982edf17cd9c660d" ] } ], + "timestamp": "2026-06-16T15:40:53.924180048", "meta": { - "nf-test": "0.9.3", - "nextflow": "25.10.4" - }, - "timestamp": "2026-03-30T14:47:13.474058057" + "nf-test": "0.9.5", + "nextflow": "26.04.3" + } }, "With microarray": { "content": [ { "0": [ - "all_genes_summary.csv:md5,67da835eca8de21309e7b3ec0f6a31f7" + "all_genes_summary.csv:md5,3a16cde6f60003b478202bb3ddd7ea32" ], "1": [ [ - "section_1.most_stable_genes_summary.csv:md5,a4c693ec5ae3f4e0e5313811dd96fa21", - "section_2.most_stable_genes_summary.csv:md5,1c33432a2576231c821e52424113a65b" + "section_1.most_stable_genes_summary.csv:md5,542b219460ec57fb81130046625fb297", + "section_2.most_stable_genes_summary.csv:md5,e901728d1736cc7a31a837409d6e1829" ] ], "2": [ [ - "section_1.most_stable_genes_transposed_counts.csv:md5,30f84570c2104f7cfac4289d583b68cd", - "section_2.most_stable_genes_transposed_counts.csv:md5,3ffbb8370e2bdd0c1867610a51405260" + "section_1.most_stable_genes_transposed_counts.csv:md5,67d8ff94a2724dc2982edf17cd9c660d", + "section_2.most_stable_genes_transposed_counts.csv:md5,1e0068dc0f56eff7103c3cfae2a8a46b" ] ], "3": [ @@ -302,29 +302,29 @@ ] ], "all_genes_summary": [ - "all_genes_summary.csv:md5,67da835eca8de21309e7b3ec0f6a31f7" + "all_genes_summary.csv:md5,3a16cde6f60003b478202bb3ddd7ea32" ], "custom_content_multiqc_config": [ "custom_content_multiqc_config.yaml:md5,3b4d962847a26bdc7c0fa34c4fcff168" ], "most_stable_genes_summary": [ [ - "section_1.most_stable_genes_summary.csv:md5,a4c693ec5ae3f4e0e5313811dd96fa21", - "section_2.most_stable_genes_summary.csv:md5,1c33432a2576231c821e52424113a65b" + "section_1.most_stable_genes_summary.csv:md5,542b219460ec57fb81130046625fb297", + "section_2.most_stable_genes_summary.csv:md5,e901728d1736cc7a31a837409d6e1829" ] ], "most_stable_genes_transposed_counts_filtered": [ [ - "section_1.most_stable_genes_transposed_counts.csv:md5,30f84570c2104f7cfac4289d583b68cd", - "section_2.most_stable_genes_transposed_counts.csv:md5,3ffbb8370e2bdd0c1867610a51405260" + "section_1.most_stable_genes_transposed_counts.csv:md5,67d8ff94a2724dc2982edf17cd9c660d", + "section_2.most_stable_genes_transposed_counts.csv:md5,1e0068dc0f56eff7103c3cfae2a8a46b" ] ] } ], + "timestamp": "2026-06-16T15:40:26.501568291", "meta": { - "nf-test": "0.9.3", - "nextflow": "25.10.4" - }, - "timestamp": "2026-03-30T14:46:55.231695582" + "nf-test": "0.9.5", + "nextflow": "26.04.3" + } } } \ No newline at end of file diff --git a/tests/modules/local/compute_gene_statistics/main.nf.test.snap b/tests/modules/local/compute_gene_statistics/main.nf.test.snap index 0e7756f2..2be9f174 100644 --- a/tests/modules/local/compute_gene_statistics/main.nf.test.snap +++ b/tests/modules/local/compute_gene_statistics/main.nf.test.snap @@ -3,7 +3,7 @@ "content": [ { "0": [ - "rnaseq.stats_all_genes.csv:md5,e2a15d08a3ada8daba6d5b834dbe1de7" + "rnaseq.stats_all_genes.csv:md5,9944aa2a366b7647be87134a4f45ad5d" ], "1": [ [ @@ -20,21 +20,21 @@ ] ], "stats": [ - "rnaseq.stats_all_genes.csv:md5,e2a15d08a3ada8daba6d5b834dbe1de7" + "rnaseq.stats_all_genes.csv:md5,9944aa2a366b7647be87134a4f45ad5d" ] } ], + "timestamp": "2026-06-16T15:41:20.924690922", "meta": { - "nf-test": "0.9.3", - "nextflow": "25.10.4" - }, - "timestamp": "2026-03-30T14:48:46.011713833" + "nf-test": "0.9.5", + "nextflow": "26.04.3" + } }, "No platform": { "content": [ { "0": [ - "stats_all_genes.csv:md5,42e9e52c43527e80489294a2c2dbbec0" + "stats_all_genes.csv:md5,7bd63edd3b80decff114f5dc7e7b0384" ], "1": [ [ @@ -51,21 +51,21 @@ ] ], "stats": [ - "stats_all_genes.csv:md5,42e9e52c43527e80489294a2c2dbbec0" + "stats_all_genes.csv:md5,7bd63edd3b80decff114f5dc7e7b0384" ] } ], + "timestamp": "2026-06-16T15:41:02.798127853", "meta": { - "nf-test": "0.9.3", - "nextflow": "25.10.4" - }, - "timestamp": "2026-03-30T14:48:33.525954126" + "nf-test": "0.9.5", + "nextflow": "26.04.3" + } }, "RNAseq platform": { "content": [ { "0": [ - "rnaseq.stats_all_genes.csv:md5,e2a15d08a3ada8daba6d5b834dbe1de7" + "rnaseq.stats_all_genes.csv:md5,9944aa2a366b7647be87134a4f45ad5d" ], "1": [ [ @@ -82,14 +82,14 @@ ] ], "stats": [ - "rnaseq.stats_all_genes.csv:md5,e2a15d08a3ada8daba6d5b834dbe1de7" + "rnaseq.stats_all_genes.csv:md5,9944aa2a366b7647be87134a4f45ad5d" ] } ], + "timestamp": "2026-06-16T15:41:12.049719767", "meta": { - "nf-test": "0.9.3", - "nextflow": "25.10.4" - }, - "timestamp": "2026-03-30T14:48:39.77826003" + "nf-test": "0.9.5", + "nextflow": "26.04.3" + } } } \ No newline at end of file diff --git a/tests/modules/local/compute_stability_scores/main.nf.test.snap b/tests/modules/local/compute_stability_scores/main.nf.test.snap index 5b386ca1..d39ec078 100644 --- a/tests/modules/local/compute_stability_scores/main.nf.test.snap +++ b/tests/modules/local/compute_stability_scores/main.nf.test.snap @@ -3,7 +3,7 @@ "content": [ { "0": [ - "section_1.stats_with_scores.csv:md5,7b1dd3c6e4a666561ca6ebe14aae7b74" + "section_1.stats_with_scores.csv:md5,22ea4f444a2972d5f107abc26cd417ec" ], "1": [ [ @@ -20,21 +20,21 @@ ] ], "stats_with_stability_scores": [ - "section_1.stats_with_scores.csv:md5,7b1dd3c6e4a666561ca6ebe14aae7b74" + "section_1.stats_with_scores.csv:md5,22ea4f444a2972d5f107abc26cd417ec" ] } ], + "timestamp": "2026-06-16T15:41:29.684036082", "meta": { - "nf-test": "0.9.3", - "nextflow": "25.10.4" - }, - "timestamp": "2026-03-30T15:20:22.075756497" + "nf-test": "0.9.5", + "nextflow": "26.04.3" + } }, "Without Genorm": { "content": [ { "0": [ - "section_1.stats_with_scores.csv:md5,bdf823d07ed6fed0313e5cf2ce1811a6" + "section_1.stats_with_scores.csv:md5,cdd1e28e31dc0bc592cb36557f5e5a69" ], "1": [ [ @@ -51,14 +51,14 @@ ] ], "stats_with_stability_scores": [ - "section_1.stats_with_scores.csv:md5,bdf823d07ed6fed0313e5cf2ce1811a6" + "section_1.stats_with_scores.csv:md5,cdd1e28e31dc0bc592cb36557f5e5a69" ] } ], + "timestamp": "2026-06-16T15:41:38.574352608", "meta": { - "nf-test": "0.9.3", - "nextflow": "25.10.4" - }, - "timestamp": "2026-03-30T15:20:28.206402711" + "nf-test": "0.9.5", + "nextflow": "26.04.3" + } } } \ No newline at end of file diff --git a/tests/modules/local/expressionatlas/getaccessions/main.nf.test.snap b/tests/modules/local/expressionatlas/getaccessions/main.nf.test.snap index f784b39f..01391db2 100644 --- a/tests/modules/local/expressionatlas/getaccessions/main.nf.test.snap +++ b/tests/modules/local/expressionatlas/getaccessions/main.nf.test.snap @@ -57,11 +57,11 @@ ] } ], + "timestamp": "2026-02-19T10:19:07.035607232", "meta": { "nf-test": "0.9.3", "nextflow": "25.10.4" - }, - "timestamp": "2026-02-19T10:19:07.035607232" + } }, "Solanum tuberosum no keyword": { "content": [ @@ -121,10 +121,10 @@ ] } ], + "timestamp": "2026-02-19T10:19:20.628916067", "meta": { "nf-test": "0.9.3", "nextflow": "25.10.4" - }, - "timestamp": "2026-02-19T10:19:20.628916067" + } } } \ No newline at end of file diff --git a/tests/modules/local/expressionatlas/getdata/main.nf.test.snap b/tests/modules/local/expressionatlas/getdata/main.nf.test.snap index cc3b5be5..74bcd293 100644 --- a/tests/modules/local/expressionatlas/getdata/main.nf.test.snap +++ b/tests/modules/local/expressionatlas/getdata/main.nf.test.snap @@ -36,11 +36,11 @@ ] } ], + "timestamp": "2026-03-19T12:17:31.898448037", "meta": { "nf-test": "0.9.3", "nextflow": "25.10.4" - }, - "timestamp": "2026-03-19T12:17:31.898448037" + } }, "Arabidopsis Geo dataset": { "content": [ @@ -79,11 +79,11 @@ ] } ], + "timestamp": "2026-03-29T16:45:22.368557567", "meta": { "nf-test": "0.9.3", "nextflow": "25.10.4" - }, - "timestamp": "2026-03-29T16:45:22.368557567" + } }, "Transcription profiling by array of Arabidopsis mutant for fis2 (microarray)": { "content": [ @@ -122,10 +122,10 @@ ] } ], + "timestamp": "2026-03-19T12:17:45.546042421", "meta": { "nf-test": "0.9.3", "nextflow": "25.10.4" - }, - "timestamp": "2026-03-19T12:17:45.546042421" + } } } \ No newline at end of file diff --git a/tests/modules/local/filter_and_rename_genes/main.nf.test.snap b/tests/modules/local/filter_and_rename_genes/main.nf.test.snap index 874f066c..d1d522cd 100644 --- a/tests/modules/local/filter_and_rename_genes/main.nf.test.snap +++ b/tests/modules/local/filter_and_rename_genes/main.nf.test.snap @@ -42,11 +42,11 @@ ] } ], + "timestamp": "2026-06-12T08:09:46.615755143", "meta": { - "nf-test": "0.9.3", - "nextflow": "25.10.4" - }, - "timestamp": "2026-04-17T09:04:45.840061804" + "nf-test": "0.9.5", + "nextflow": "25.04.0" + } }, "Map Ensembl IDs": { "content": [ @@ -56,7 +56,7 @@ { "dataset": "test" }, - "counts.ensembl_ids.renamed.parquet:md5,1fe83a8ee993d02c9df18f7412d20f0f" + "counts.ensembl_ids.renamed.parquet:md5,240e4ecc8be3610bdf182c48f78426e2" ] ], "1": [ @@ -93,16 +93,16 @@ { "dataset": "test" }, - "counts.ensembl_ids.renamed.parquet:md5,1fe83a8ee993d02c9df18f7412d20f0f" + "counts.ensembl_ids.renamed.parquet:md5,240e4ecc8be3610bdf182c48f78426e2" ] ] } ], + "timestamp": "2026-06-12T08:09:29.718088202", "meta": { - "nf-test": "0.9.3", - "nextflow": "25.10.4" - }, - "timestamp": "2026-04-17T09:04:26.849187591" + "nf-test": "0.9.5", + "nextflow": "25.04.0" + } }, "No valid gene": { "content": [ @@ -147,10 +147,10 @@ ] } ], + "timestamp": "2026-06-12T08:09:38.20851685", "meta": { - "nf-test": "0.9.3", - "nextflow": "25.10.4" - }, - "timestamp": "2026-04-17T09:04:36.329611443" + "nf-test": "0.9.5", + "nextflow": "25.04.0" + } } } \ No newline at end of file diff --git a/tests/modules/local/genorm/compute_m_measure/main.nf.test b/tests/modules/local/genorm/compute_m_measure/main.nf.test index fbcd556c..89cf984a 100644 --- a/tests/modules/local/genorm/compute_m_measure/main.nf.test +++ b/tests/modules/local/genorm/compute_m_measure/main.nf.test @@ -12,7 +12,6 @@ nextflow_process { """ input[0] = [ [section: "section_1"], - file( '$projectDir/tests/test_data/genorm/make_chunks/input/counts.parquet', checkIfExists: true), file( '$projectDir/tests/test_data/genorm/compute_m_measure/input/std.*.parquet', checkIfExists: true).collect() ] """ diff --git a/tests/modules/local/genorm/compute_m_measure/main.nf.test.snap b/tests/modules/local/genorm/compute_m_measure/main.nf.test.snap index 767f3dd7..19defb76 100644 --- a/tests/modules/local/genorm/compute_m_measure/main.nf.test.snap +++ b/tests/modules/local/genorm/compute_m_measure/main.nf.test.snap @@ -7,7 +7,7 @@ { "section": "section_1" }, - "m_measures.csv:md5,2119b16fe13e2d0bc0fedc3c9d3d1733" + "m_measures.csv:md5,48e7d6e3338f60468bf5ade2361eccd4" ] ], "1": [ @@ -21,7 +21,7 @@ [ "COMPUTE_M_MEASURE", "polars", - "1.39.2" + "1.41.2" ] ], "m_measures": [ @@ -29,15 +29,15 @@ { "section": "section_1" }, - "m_measures.csv:md5,2119b16fe13e2d0bc0fedc3c9d3d1733" + "m_measures.csv:md5,48e7d6e3338f60468bf5ade2361eccd4" ] ] } ], + "timestamp": "2026-06-18T18:14:52.007426435", "meta": { - "nf-test": "0.9.3", - "nextflow": "25.10.4" - }, - "timestamp": "2026-03-30T15:40:23.09370734" + "nf-test": "0.9.5", + "nextflow": "26.04.3" + } } } \ No newline at end of file diff --git a/tests/modules/local/genorm/cross_join/main.nf.test.snap b/tests/modules/local/genorm/cross_join/main.nf.test.snap index 50d11bc4..b11d3254 100644 --- a/tests/modules/local/genorm/cross_join/main.nf.test.snap +++ b/tests/modules/local/genorm/cross_join/main.nf.test.snap @@ -38,10 +38,10 @@ ] } ], + "timestamp": "2026-03-30T15:40:29.248178717", "meta": { "nf-test": "0.9.3", "nextflow": "25.10.4" - }, - "timestamp": "2026-03-30T15:40:29.248178717" + } } } \ No newline at end of file diff --git a/tests/modules/local/genorm/expression_ratio/main.nf.test.snap b/tests/modules/local/genorm/expression_ratio/main.nf.test.snap index a9e492ef..f0347aba 100644 --- a/tests/modules/local/genorm/expression_ratio/main.nf.test.snap +++ b/tests/modules/local/genorm/expression_ratio/main.nf.test.snap @@ -38,10 +38,10 @@ ] } ], + "timestamp": "2026-04-01T09:41:39.459415462", "meta": { "nf-test": "0.9.3", "nextflow": "25.10.4" - }, - "timestamp": "2026-04-01T09:41:39.459415462" + } } } \ No newline at end of file diff --git a/tests/modules/local/genorm/make_chunks/main.nf.test.snap b/tests/modules/local/genorm/make_chunks/main.nf.test.snap index 5b2f00be..2444c0f2 100644 --- a/tests/modules/local/genorm/make_chunks/main.nf.test.snap +++ b/tests/modules/local/genorm/make_chunks/main.nf.test.snap @@ -8,16 +8,16 @@ "section": "section_1" }, [ - "count_chunk.0.parquet:md5,2b49edb51f57065edec0dbbc3b50cd03", - "count_chunk.1.parquet:md5,a229839cc11b60b51d75e69bda1b079e", - "count_chunk.2.parquet:md5,79e06a8d5438a1fd8c35bb7e861bbb2f", - "count_chunk.3.parquet:md5,b4b75fd8c257684914ea81acec63c7b2", - "count_chunk.4.parquet:md5,938d6eb757a2114fba7c37cb79917fdb", - "count_chunk.5.parquet:md5,7de0a7158eaf28de2728ad10ed68fea3", - "count_chunk.6.parquet:md5,b7bb9a8ed8578bbf661d60dc0cc43a09", - "count_chunk.7.parquet:md5,d424e46fbcab660f7994086d95d83955", - "count_chunk.8.parquet:md5,5411ffdabeda55de3d67ae8cc32e0276", - "count_chunk.9.parquet:md5,484ecc44837b0a0f3098bff5a8144853" + "count_chunk.0.parquet:md5,22be5d967ebe1fc85ca2ae89b0d4ace8", + "count_chunk.1.parquet:md5,7767448e1420f03dcd5bbecda253a80d", + "count_chunk.2.parquet:md5,c898285b5d27ea91c0623fe944ef199d", + "count_chunk.3.parquet:md5,aa7bac7ac4cbddba4a4dc24c7d27209f", + "count_chunk.4.parquet:md5,7cc111de4bb94ad1b28cf653e263f270", + "count_chunk.5.parquet:md5,0ac9382a38f3c3f588197cdcb5545756", + "count_chunk.6.parquet:md5,9980655eca04ab6f95b2a3e251838d41", + "count_chunk.7.parquet:md5,6981a1560d1aacf69946e9550352fa40", + "count_chunk.8.parquet:md5,8267efdcb52eb358154d3d7fabcce4bd", + "count_chunk.9.parquet:md5,cb0b98b55e25741209f4e8ff06f97c85" ] ] ], @@ -41,25 +41,25 @@ "section": "section_1" }, [ - "count_chunk.0.parquet:md5,2b49edb51f57065edec0dbbc3b50cd03", - "count_chunk.1.parquet:md5,a229839cc11b60b51d75e69bda1b079e", - "count_chunk.2.parquet:md5,79e06a8d5438a1fd8c35bb7e861bbb2f", - "count_chunk.3.parquet:md5,b4b75fd8c257684914ea81acec63c7b2", - "count_chunk.4.parquet:md5,938d6eb757a2114fba7c37cb79917fdb", - "count_chunk.5.parquet:md5,7de0a7158eaf28de2728ad10ed68fea3", - "count_chunk.6.parquet:md5,b7bb9a8ed8578bbf661d60dc0cc43a09", - "count_chunk.7.parquet:md5,d424e46fbcab660f7994086d95d83955", - "count_chunk.8.parquet:md5,5411ffdabeda55de3d67ae8cc32e0276", - "count_chunk.9.parquet:md5,484ecc44837b0a0f3098bff5a8144853" + "count_chunk.0.parquet:md5,22be5d967ebe1fc85ca2ae89b0d4ace8", + "count_chunk.1.parquet:md5,7767448e1420f03dcd5bbecda253a80d", + "count_chunk.2.parquet:md5,c898285b5d27ea91c0623fe944ef199d", + "count_chunk.3.parquet:md5,aa7bac7ac4cbddba4a4dc24c7d27209f", + "count_chunk.4.parquet:md5,7cc111de4bb94ad1b28cf653e263f270", + "count_chunk.5.parquet:md5,0ac9382a38f3c3f588197cdcb5545756", + "count_chunk.6.parquet:md5,9980655eca04ab6f95b2a3e251838d41", + "count_chunk.7.parquet:md5,6981a1560d1aacf69946e9550352fa40", + "count_chunk.8.parquet:md5,8267efdcb52eb358154d3d7fabcce4bd", + "count_chunk.9.parquet:md5,cb0b98b55e25741209f4e8ff06f97c85" ] ] ] } ], + "timestamp": "2026-06-12T08:10:23.449640289", "meta": { - "nf-test": "0.9.3", - "nextflow": "25.10.4" - }, - "timestamp": "2026-03-30T15:40:46.563584649" + "nf-test": "0.9.5", + "nextflow": "25.04.0" + } } } \ No newline at end of file diff --git a/tests/modules/local/genorm/ratio_standard_variation/main.nf.test.snap b/tests/modules/local/genorm/ratio_standard_variation/main.nf.test.snap index 6f29543d..95e19d61 100644 --- a/tests/modules/local/genorm/ratio_standard_variation/main.nf.test.snap +++ b/tests/modules/local/genorm/ratio_standard_variation/main.nf.test.snap @@ -9,7 +9,7 @@ "index_1": 0, "index_2": 1 }, - "std.0.1.parquet:md5,10e262fc1dff8efe522a2efcee6ccb87" + "std.0.1.parquet:md5,3b7f7bca32f49e59bc9683e47dbb8550" ] ], "1": [ @@ -33,15 +33,15 @@ "index_1": 0, "index_2": 1 }, - "std.0.1.parquet:md5,10e262fc1dff8efe522a2efcee6ccb87" + "std.0.1.parquet:md5,3b7f7bca32f49e59bc9683e47dbb8550" ] ] } ], + "timestamp": "2026-06-18T18:15:25.820090001", "meta": { - "nf-test": "0.9.3", - "nextflow": "25.10.4" - }, - "timestamp": "2026-04-01T09:41:51.590963847" + "nf-test": "0.9.5", + "nextflow": "26.04.3" + } } } \ No newline at end of file diff --git a/tests/modules/local/get_candidate_genes/main.nf.test.snap b/tests/modules/local/get_candidate_genes/main.nf.test.snap index 7b869fd2..5ee95d53 100644 --- a/tests/modules/local/get_candidate_genes/main.nf.test.snap +++ b/tests/modules/local/get_candidate_genes/main.nf.test.snap @@ -11,9 +11,9 @@ ], "1": [ [ - "section_1.stats.parquet:md5,3414fd57e9bf4f221b2df93be2e890a2", - "section_2.stats.parquet:md5,99b7bcc7944c77eb569b688c640d70f2", - "section_3.stats.parquet:md5,752dbfb5699fbe6847ac17a4fb6da51a" + "section_1.stats.parquet:md5,d487f854f64ce2b01a6e6dd255b760b6", + "section_2.stats.parquet:md5,6dcd4004f6e4b39714955d64b1ffe420", + "section_3.stats.parquet:md5,f69355ed9438b82d054f4e5cbcc807c0" ] ], "2": [ @@ -39,18 +39,18 @@ ], "section_stats": [ [ - "section_1.stats.parquet:md5,3414fd57e9bf4f221b2df93be2e890a2", - "section_2.stats.parquet:md5,99b7bcc7944c77eb569b688c640d70f2", - "section_3.stats.parquet:md5,752dbfb5699fbe6847ac17a4fb6da51a" + "section_1.stats.parquet:md5,d487f854f64ce2b01a6e6dd255b760b6", + "section_2.stats.parquet:md5,6dcd4004f6e4b39714955d64b1ffe420", + "section_3.stats.parquet:md5,f69355ed9438b82d054f4e5cbcc807c0" ] ] } ], + "timestamp": "2026-06-12T08:11:42.575272746", "meta": { - "nf-test": "0.9.3", - "nextflow": "25.10.4" - }, - "timestamp": "2026-03-30T17:07:03.292271274" + "nf-test": "0.9.5", + "nextflow": "25.04.0" + } }, "Too many sections": { "content": [ @@ -70,15 +70,15 @@ ], "1": [ [ - "section_12.stats.parquet:md5,069d23175be9d1a733b4996895d4a3ce", - "section_14.stats.parquet:md5,73e852a1083f86d2d99d4f93ab6228c0", - "section_16.stats.parquet:md5,6aa616308faf4403194f18fae7cd1024", - "section_18.stats.parquet:md5,0b17005fab7582663111ea77cefca427", - "section_20.stats.parquet:md5,03c52c419ff94b63d0b16b2e9e87fa26", - "section_3.stats.parquet:md5,14a121ecab4116935fa9df136afc997a", - "section_5.stats.parquet:md5,3a3700641343056feabac2aa76626556", - "section_7.stats.parquet:md5,d6af8c940d55e449397b7fc0c428fedf", - "section_9.stats.parquet:md5,eb375761c7111b78bf8779bf71f876ef" + "section_12.stats.parquet:md5,fb4b2180a8814488cf9bc0e0b0cbb0bf", + "section_14.stats.parquet:md5,c4c5420d2097643f1b501599c7ea2313", + "section_16.stats.parquet:md5,eaab929d8e085aecdd7f896bcb0556ac", + "section_18.stats.parquet:md5,8bf510663d700900fda943b028b93a11", + "section_20.stats.parquet:md5,a2b607d8c16362f7d7edaa971106811e", + "section_3.stats.parquet:md5,c224ee2861966e04bba67626aa23c3f8", + "section_5.stats.parquet:md5,f965b8acfdd5368c16cfc94eb2eb10c6", + "section_7.stats.parquet:md5,425a5a9cd47ea0694688789e22e18335", + "section_9.stats.parquet:md5,f898aa017c0babd634043172d8e8bf41" ] ], "2": [ @@ -110,23 +110,23 @@ ], "section_stats": [ [ - "section_12.stats.parquet:md5,069d23175be9d1a733b4996895d4a3ce", - "section_14.stats.parquet:md5,73e852a1083f86d2d99d4f93ab6228c0", - "section_16.stats.parquet:md5,6aa616308faf4403194f18fae7cd1024", - "section_18.stats.parquet:md5,0b17005fab7582663111ea77cefca427", - "section_20.stats.parquet:md5,03c52c419ff94b63d0b16b2e9e87fa26", - "section_3.stats.parquet:md5,14a121ecab4116935fa9df136afc997a", - "section_5.stats.parquet:md5,3a3700641343056feabac2aa76626556", - "section_7.stats.parquet:md5,d6af8c940d55e449397b7fc0c428fedf", - "section_9.stats.parquet:md5,eb375761c7111b78bf8779bf71f876ef" + "section_12.stats.parquet:md5,fb4b2180a8814488cf9bc0e0b0cbb0bf", + "section_14.stats.parquet:md5,c4c5420d2097643f1b501599c7ea2313", + "section_16.stats.parquet:md5,eaab929d8e085aecdd7f896bcb0556ac", + "section_18.stats.parquet:md5,8bf510663d700900fda943b028b93a11", + "section_20.stats.parquet:md5,a2b607d8c16362f7d7edaa971106811e", + "section_3.stats.parquet:md5,c224ee2861966e04bba67626aa23c3f8", + "section_5.stats.parquet:md5,f965b8acfdd5368c16cfc94eb2eb10c6", + "section_7.stats.parquet:md5,425a5a9cd47ea0694688789e22e18335", + "section_9.stats.parquet:md5,f898aa017c0babd634043172d8e8bf41" ] ] } ], + "timestamp": "2026-06-12T08:11:51.520101198", "meta": { - "nf-test": "0.9.3", - "nextflow": "25.10.4" - }, - "timestamp": "2026-03-30T17:07:09.643611957" + "nf-test": "0.9.5", + "nextflow": "25.04.0" + } } } \ No newline at end of file diff --git a/tests/modules/local/gprofiler/idmapping/main.nf.test.snap b/tests/modules/local/gprofiler/idmapping/main.nf.test.snap index 850dae54..33550d23 100644 --- a/tests/modules/local/gprofiler/idmapping/main.nf.test.snap +++ b/tests/modules/local/gprofiler/idmapping/main.nf.test.snap @@ -34,10 +34,10 @@ ] } ], + "timestamp": "2026-02-19T10:26:01.249646558", "meta": { "nf-test": "0.9.3", "nextflow": "25.10.4" - }, - "timestamp": "2026-02-19T10:26:01.249646558" + } } } \ No newline at end of file diff --git a/tests/modules/local/merge_counts/main.nf.test.snap b/tests/modules/local/merge_counts/main.nf.test.snap index 6e773d44..e80bb4ce 100644 --- a/tests/modules/local/merge_counts/main.nf.test.snap +++ b/tests/modules/local/merge_counts/main.nf.test.snap @@ -7,7 +7,7 @@ { "platform": "microarray" }, - "all_counts.parquet:md5,4ceb116e0a52b92ab31ec4e122ed12a1" + "all_counts.parquet:md5,f3234a9f680271996f806b7f0f34a11c" ] ], "1": [ @@ -29,16 +29,16 @@ { "platform": "microarray" }, - "all_counts.parquet:md5,4ceb116e0a52b92ab31ec4e122ed12a1" + "all_counts.parquet:md5,f3234a9f680271996f806b7f0f34a11c" ] ] } ], + "timestamp": "2026-06-12T08:12:20.187397045", "meta": { - "nf-test": "0.9.3", - "nextflow": "25.10.4" - }, - "timestamp": "2026-03-30T16:41:25.646239587" + "nf-test": "0.9.5", + "nextflow": "25.04.0" + } }, "3 files": { "content": [ @@ -48,7 +48,7 @@ { "platform": "rnaseq" }, - "all_counts.parquet:md5,c519c7936217c9399081069a48539c07" + "all_counts.parquet:md5,e64b6447f373377c507ae4136228ffbb" ] ], "1": [ @@ -70,15 +70,15 @@ { "platform": "rnaseq" }, - "all_counts.parquet:md5,c519c7936217c9399081069a48539c07" + "all_counts.parquet:md5,e64b6447f373377c507ae4136228ffbb" ] ] } ], + "timestamp": "2026-06-12T08:12:10.754546152", "meta": { - "nf-test": "0.9.3", - "nextflow": "25.10.4" - }, - "timestamp": "2026-03-30T16:39:46.447995126" + "nf-test": "0.9.5", + "nextflow": "25.04.0" + } } } \ No newline at end of file diff --git a/tests/modules/local/normalisation/compute_cpm/main.nf.test.snap b/tests/modules/local/normalisation/compute_cpm/main.nf.test.snap index 6f3d7957..78951fcb 100644 --- a/tests/modules/local/normalisation/compute_cpm/main.nf.test.snap +++ b/tests/modules/local/normalisation/compute_cpm/main.nf.test.snap @@ -7,7 +7,7 @@ { "dataset": "test" }, - "counts.cpm.parquet:md5,8802fdfa77c0da39062bf357dccdd3cd" + "counts.cpm.parquet:md5,2cd6ee764e06ca052fe11a41e2818e87" ] ], "1": [ @@ -35,16 +35,16 @@ { "dataset": "test" }, - "counts.cpm.parquet:md5,8802fdfa77c0da39062bf357dccdd3cd" + "counts.cpm.parquet:md5,2cd6ee764e06ca052fe11a41e2818e87" ] ] } ], + "timestamp": "2026-06-12T08:12:29.209053648", "meta": { - "nf-test": "0.9.3", - "nextflow": "25.10.4" - }, - "timestamp": "2026-04-17T09:07:24.246785277" + "nf-test": "0.9.5", + "nextflow": "25.04.0" + } }, "One group": { "content": [ @@ -54,7 +54,7 @@ { "dataset": "accession" }, - "counts.cpm.parquet:md5,c8855975f68aad3c3bb060a23c14e2f9" + "counts.cpm.parquet:md5,92565ffdb68131e1e218dfcc04a0a056" ] ], "1": [ @@ -82,16 +82,16 @@ { "dataset": "accession" }, - "counts.cpm.parquet:md5,c8855975f68aad3c3bb060a23c14e2f9" + "counts.cpm.parquet:md5,92565ffdb68131e1e218dfcc04a0a056" ] ] } ], + "timestamp": "2026-06-12T08:12:47.72673362", "meta": { - "nf-test": "0.9.3", - "nextflow": "25.10.4" - }, - "timestamp": "2026-03-19T12:23:45.874853063" + "nf-test": "0.9.5", + "nextflow": "25.04.0" + } }, "TSV files": { "content": [ @@ -101,7 +101,7 @@ { "dataset": "accession" }, - "counts.cpm.parquet:md5,8802fdfa77c0da39062bf357dccdd3cd" + "counts.cpm.parquet:md5,2cd6ee764e06ca052fe11a41e2818e87" ] ], "1": [ @@ -129,16 +129,16 @@ { "dataset": "accession" }, - "counts.cpm.parquet:md5,8802fdfa77c0da39062bf357dccdd3cd" + "counts.cpm.parquet:md5,2cd6ee764e06ca052fe11a41e2818e87" ] ] } ], + "timestamp": "2026-06-12T08:12:56.469186276", "meta": { - "nf-test": "0.9.3", - "nextflow": "25.10.4" - }, - "timestamp": "2026-03-19T12:23:54.407797312" + "nf-test": "0.9.5", + "nextflow": "25.04.0" + } }, "Rows with many zeros": { "content": [ @@ -148,7 +148,7 @@ { "dataset": "test" }, - "counts.cpm.parquet:md5,ab2596a5bb8b3b2e39754191a2dce2aa" + "counts.cpm.parquet:md5,b30ef63196202a42a06593b353f13891" ] ], "1": [ @@ -176,15 +176,15 @@ { "dataset": "test" }, - "counts.cpm.parquet:md5,ab2596a5bb8b3b2e39754191a2dce2aa" + "counts.cpm.parquet:md5,b30ef63196202a42a06593b353f13891" ] ] } ], + "timestamp": "2026-06-12T08:12:38.39403833", "meta": { - "nf-test": "0.9.3", - "nextflow": "25.10.4" - }, - "timestamp": "2026-04-17T09:07:34.001566313" + "nf-test": "0.9.5", + "nextflow": "25.04.0" + } } } \ No newline at end of file diff --git a/tests/modules/local/normalisation/compute_tpm/main.nf.test.snap b/tests/modules/local/normalisation/compute_tpm/main.nf.test.snap index 287c19f0..fd6a7dbc 100644 --- a/tests/modules/local/normalisation/compute_tpm/main.nf.test.snap +++ b/tests/modules/local/normalisation/compute_tpm/main.nf.test.snap @@ -40,11 +40,11 @@ ] } ], + "timestamp": "2026-06-12T08:13:05.279065574", "meta": { - "nf-test": "0.9.3", - "nextflow": "25.10.4" - }, - "timestamp": "2026-04-17T09:08:02.882187442" + "nf-test": "0.9.5", + "nextflow": "25.04.0" + } }, "One group": { "content": [ @@ -87,11 +87,11 @@ ] } ], + "timestamp": "2026-06-12T08:13:22.770937523", "meta": { - "nf-test": "0.9.3", - "nextflow": "25.10.4" - }, - "timestamp": "2026-04-17T09:08:21.950858405" + "nf-test": "0.9.5", + "nextflow": "25.04.0" + } }, "TSV files": { "content": [ @@ -134,11 +134,11 @@ ] } ], + "timestamp": "2026-06-12T08:13:33.01260406", "meta": { - "nf-test": "0.9.3", - "nextflow": "25.10.4" - }, - "timestamp": "2026-04-17T09:08:31.427239077" + "nf-test": "0.9.5", + "nextflow": "25.04.0" + } }, "Rows with many zeros": { "content": [ @@ -181,10 +181,10 @@ ] } ], + "timestamp": "2026-06-12T08:13:13.960170504", "meta": { - "nf-test": "0.9.3", - "nextflow": "25.10.4" - }, - "timestamp": "2026-04-17T09:08:12.502224484" + "nf-test": "0.9.5", + "nextflow": "25.04.0" + } } } \ No newline at end of file diff --git a/tests/modules/local/normfinder/main.nf.test.snap b/tests/modules/local/normfinder/main.nf.test.snap index 0b2298f7..17d6bb75 100644 --- a/tests/modules/local/normfinder/main.nf.test.snap +++ b/tests/modules/local/normfinder/main.nf.test.snap @@ -7,7 +7,7 @@ { "section": "section_1" }, - "stability_values.normfinder.csv:md5,05b3b9508930923bd86c281e8febe6b6" + "stability_values.normfinder.csv:md5,9feb77b35b597334e978b8db48fad80c" ] ], "1": [ @@ -50,16 +50,16 @@ { "section": "section_1" }, - "stability_values.normfinder.csv:md5,05b3b9508930923bd86c281e8febe6b6" + "stability_values.normfinder.csv:md5,9feb77b35b597334e978b8db48fad80c" ] ] } ], + "timestamp": "2026-06-16T15:49:44.122013283", "meta": { - "nf-test": "0.9.3", - "nextflow": "25.10.4" - }, - "timestamp": "2026-03-30T15:45:00.995645591" + "nf-test": "0.9.5", + "nextflow": "26.04.3" + } }, "Very small dataset - Cq values": { "content": [ @@ -69,7 +69,7 @@ { "section": "section_1" }, - "stability_values.normfinder.csv:md5,a7c936faa9135439fd1b86c195f60414" + "stability_values.normfinder.csv:md5,23af9fdc4bf6805666657b08f9a9de50" ] ], "1": [ @@ -112,15 +112,15 @@ { "section": "section_1" }, - "stability_values.normfinder.csv:md5,a7c936faa9135439fd1b86c195f60414" + "stability_values.normfinder.csv:md5,23af9fdc4bf6805666657b08f9a9de50" ] ] } ], + "timestamp": "2026-06-16T15:49:30.601400305", "meta": { - "nf-test": "0.9.3", - "nextflow": "25.10.4" - }, - "timestamp": "2026-03-30T15:44:51.060894512" + "nf-test": "0.9.5", + "nextflow": "26.04.3" + } } } \ No newline at end of file diff --git a/tests/modules/local/quantile_normalisation/main.nf.test.snap b/tests/modules/local/quantile_normalisation/main.nf.test.snap index 1e2bce1c..9ebc6f46 100644 --- a/tests/modules/local/quantile_normalisation/main.nf.test.snap +++ b/tests/modules/local/quantile_normalisation/main.nf.test.snap @@ -7,7 +7,7 @@ { "dataset": "test" }, - "count.raw.cpm.quant_norm.parquet:md5,4ceb116e0a52b92ab31ec4e122ed12a1" + "count.raw.cpm.quant_norm.parquet:md5,f3234a9f680271996f806b7f0f34a11c" ] ], "1": [ @@ -36,16 +36,16 @@ { "dataset": "test" }, - "count.raw.cpm.quant_norm.parquet:md5,4ceb116e0a52b92ab31ec4e122ed12a1" + "count.raw.cpm.quant_norm.parquet:md5,f3234a9f680271996f806b7f0f34a11c" ] ] } ], + "timestamp": "2026-06-12T08:14:13.202512087", "meta": { - "nf-test": "0.9.3", - "nextflow": "25.10.4" - }, - "timestamp": "2026-04-17T09:09:10.597987851" + "nf-test": "0.9.5", + "nextflow": "25.04.0" + } }, "Normal target distribution": { "content": [ @@ -55,7 +55,7 @@ { "dataset": "test" }, - "count.raw.cpm.quant_norm.parquet:md5,10c118fd62dad210b585f30620679732" + "count.raw.cpm.quant_norm.parquet:md5,016bcee1dbaebcb6a90546b00f87ac95" ] ], "1": [ @@ -84,15 +84,15 @@ { "dataset": "test" }, - "count.raw.cpm.quant_norm.parquet:md5,10c118fd62dad210b585f30620679732" + "count.raw.cpm.quant_norm.parquet:md5,016bcee1dbaebcb6a90546b00f87ac95" ] ] } ], + "timestamp": "2026-06-12T08:14:25.271455593", "meta": { - "nf-test": "0.9.3", - "nextflow": "25.10.4" - }, - "timestamp": "2026-04-17T09:09:22.718260106" + "nf-test": "0.9.5", + "nextflow": "25.04.0" + } } } \ No newline at end of file diff --git a/tests/prepare_pr/.config b/tests/prepare_pr/.config new file mode 100644 index 00000000..0367cac9 --- /dev/null +++ b/tests/prepare_pr/.config @@ -0,0 +1,15 @@ +process { + + publishDir = [ + path: { + try { + meta.section ? + "${params.outdir}/${meta.section}/${task.process.tokenize(':')[-1].toLowerCase()}" : + "${params.outdir}/${task.process.tokenize(':')[-1].toLowerCase()}" + } catch (e) { + "${params.outdir}/${task.process.tokenize(':')[-1].toLowerCase()}" + } + }, + mode: 'copy', + ] +} diff --git a/tests/prepare_pr/check_consistency.sh b/tests/prepare_pr/check_consistency.sh new file mode 100755 index 00000000..1d0e09b0 --- /dev/null +++ b/tests/prepare_pr/check_consistency.sh @@ -0,0 +1,32 @@ +#!/usr/bin/env bash + +set -euo pipefail + +PREP_DIR="$(dirname $(realpath "$0"))" +REPO_ROOT="$(dirname $(dirname $PREP_DIR))" + +MAIN_SCRIPT="${REPO_ROOT}/main.nf" +PREP_CONFIG="${PREP_DIR}/.config" +BASE_OUTDIR="${REPO_ROOT}/results/consistency_test" + + +NB_RUNS=4 + +rm -rf ${BASE_OUTDIR} +for i in $(seq 1 $NB_RUNS) +do + outdir=${BASE_OUTDIR}/run_${i} + echo "Running test ${i} with output directory ${outdir}" + nextflow run ${MAIN_SCRIPT} -profile apptainer,test -c ${PREP_CONFIG} --outdir "$outdir" + if [ $i -eq 1 ]; then + reference_outdir="$outdir" + else + res=$(diff --recursive --brief --exclude='pipeline_info' --exclude='multiqc' $outdir $reference_outdir | awk -F' ' '{print $3}') + if [ $res ]; then + echo "The following files differ: $res" + exit 1 + else + echo "Run $i is consistent with reference run 1" + fi + fi +done diff --git a/tests/prepare_pr/run.sh b/tests/prepare_pr/run.sh new file mode 100755 index 00000000..ef691bca --- /dev/null +++ b/tests/prepare_pr/run.sh @@ -0,0 +1,8 @@ +#!/usr/bin/env bash + +set -euo pipefail + +PREP_DIR="$(dirname $(realpath "$0"))" + +echo "Checking consistency of outputs" +${PREP_DIR}/check_consistency.sh diff --git a/tests/subworkflows/local/download_public_datasets/main.nf.test.snap b/tests/subworkflows/local/download_public_datasets/main.nf.test.snap index 3e299483..f02a885b 100644 --- a/tests/subworkflows/local/download_public_datasets/main.nf.test.snap +++ b/tests/subworkflows/local/download_public_datasets/main.nf.test.snap @@ -26,11 +26,11 @@ ] } ], + "timestamp": "2025-12-16T15:18:21.726044151", "meta": { "nf-test": "0.9.3", "nextflow": "25.10.2" - }, - "timestamp": "2025-12-16T15:18:21.726044151" + } }, "Beta vulgaris - Eatlas + GEO - all accessions": { "content": [ @@ -77,10 +77,10 @@ ] } ], + "timestamp": "2025-12-16T15:18:08.622422246", "meta": { "nf-test": "0.9.3", "nextflow": "25.10.2" - }, - "timestamp": "2025-12-16T15:18:08.622422246" + } } } \ No newline at end of file diff --git a/tests/subworkflows/local/expression_normalisation/main.nf.test b/tests/subworkflows/local/expression_normalisation/main.nf.test index 34632aff..1378d3d7 100644 --- a/tests/subworkflows/local/expression_normalisation/main.nf.test +++ b/tests/subworkflows/local/expression_normalisation/main.nf.test @@ -36,6 +36,7 @@ nextflow_workflow { input[3] = "uniform" input[4] = null input[5] = null + input[6] = null """ } } @@ -78,7 +79,8 @@ nextflow_workflow { input[2] = "tpm" input[3] = "uniform" input[4] = null - input[5] = file( '$projectDir/tests/test_data/input_datasets/gene_lengths.csv', checkIfExists: true ) + input[5] = null + input[6] = file( '$projectDir/tests/test_data/input_datasets/gene_lengths.csv', checkIfExists: true ) """ } } @@ -122,6 +124,7 @@ nextflow_workflow { input[3] = "uniform" input[4] = null input[5] = null + input[6] = null """ } } @@ -156,6 +159,7 @@ nextflow_workflow { input[3] = "uniform" input[4] = null input[5] = null + input[6] = null """ } } diff --git a/tests/subworkflows/local/expression_normalisation/main.nf.test.snap b/tests/subworkflows/local/expression_normalisation/main.nf.test.snap index 04a5c4ec..ccf56c89 100644 --- a/tests/subworkflows/local/expression_normalisation/main.nf.test.snap +++ b/tests/subworkflows/local/expression_normalisation/main.nf.test.snap @@ -10,7 +10,7 @@ "dataset": "rnaseq_raw", "platform": "rnaseq" }, - "rnaseq.raw.cpm.quant_norm.parquet:md5,9f7988ca916b47ed614c824e001d2512" + "rnaseq.raw.cpm.quant_norm.parquet:md5,cb63fdfcfad72d54f1bbef526674fa68" ], [ { @@ -19,7 +19,7 @@ "dataset": "microarray_normalised", "platform": "microarray" }, - "microarray.normalised.quant_norm.parquet:md5,0f9ed5a872e8c424a9ccc83b1c33753f" + "microarray.normalised.quant_norm.parquet:md5,362b17780fe521129f49a7e040beee64" ] ], "counts": [ @@ -30,7 +30,7 @@ "dataset": "rnaseq_raw", "platform": "rnaseq" }, - "rnaseq.raw.cpm.quant_norm.parquet:md5,9f7988ca916b47ed614c824e001d2512" + "rnaseq.raw.cpm.quant_norm.parquet:md5,cb63fdfcfad72d54f1bbef526674fa68" ], [ { @@ -39,16 +39,16 @@ "dataset": "microarray_normalised", "platform": "microarray" }, - "microarray.normalised.quant_norm.parquet:md5,0f9ed5a872e8c424a9ccc83b1c33753f" + "microarray.normalised.quant_norm.parquet:md5,362b17780fe521129f49a7e040beee64" ] ] } ], + "timestamp": "2026-06-12T08:16:13.228280816", "meta": { - "nf-test": "0.9.3", - "nextflow": "25.10.4" - }, - "timestamp": "2026-03-19T12:27:13.766132141" + "nf-test": "0.9.5", + "nextflow": "25.04.0" + } }, "No rnaseq normalisation": { "content": [ @@ -61,7 +61,7 @@ "dataset": "microarray_normalised", "platform": "microarray" }, - "microarray.normalised.quant_norm.parquet:md5,0f9ed5a872e8c424a9ccc83b1c33753f" + "microarray.normalised.quant_norm.parquet:md5,362b17780fe521129f49a7e040beee64" ] ], "counts": [ @@ -72,16 +72,16 @@ "dataset": "microarray_normalised", "platform": "microarray" }, - "microarray.normalised.quant_norm.parquet:md5,0f9ed5a872e8c424a9ccc83b1c33753f" + "microarray.normalised.quant_norm.parquet:md5,362b17780fe521129f49a7e040beee64" ] ] } ], + "timestamp": "2026-06-12T08:16:26.345933821", "meta": { - "nf-test": "0.9.3", - "nextflow": "25.10.4" - }, - "timestamp": "2026-03-19T12:27:25.897836784" + "nf-test": "0.9.5", + "nextflow": "25.04.0" + } }, "TPM Normalisation with gene length": { "content": [ @@ -94,7 +94,7 @@ "dataset": "rnaseq_raw", "platform": "rnaseq" }, - "rnaseq.raw.tpm.quant_norm.parquet:md5,590b3bd6ec2b09533ef75ce9950d3a92" + "rnaseq.raw.tpm.quant_norm.parquet:md5,f5ab4840f0313d30d51d5029f6f69c2d" ], [ { @@ -103,7 +103,7 @@ "dataset": "microarray_normalised", "platform": "microarray" }, - "microarray.normalised.quant_norm.parquet:md5,0f9ed5a872e8c424a9ccc83b1c33753f" + "microarray.normalised.quant_norm.parquet:md5,362b17780fe521129f49a7e040beee64" ] ], "counts": [ @@ -114,7 +114,7 @@ "dataset": "rnaseq_raw", "platform": "rnaseq" }, - "rnaseq.raw.tpm.quant_norm.parquet:md5,590b3bd6ec2b09533ef75ce9950d3a92" + "rnaseq.raw.tpm.quant_norm.parquet:md5,f5ab4840f0313d30d51d5029f6f69c2d" ], [ { @@ -123,16 +123,16 @@ "dataset": "microarray_normalised", "platform": "microarray" }, - "microarray.normalised.quant_norm.parquet:md5,0f9ed5a872e8c424a9ccc83b1c33753f" + "microarray.normalised.quant_norm.parquet:md5,362b17780fe521129f49a7e040beee64" ] ] } ], + "timestamp": "2026-06-12T08:15:58.461993083", "meta": { - "nf-test": "0.9.3", - "nextflow": "25.10.4" - }, - "timestamp": "2026-03-19T12:27:00.268510601" + "nf-test": "0.9.5", + "nextflow": "25.04.0" + } }, "TPM Normalisation": { "content": [ @@ -145,7 +145,7 @@ "dataset": "rnaseq_raw", "platform": "rnaseq" }, - "rnaseq.raw.tpm.quant_norm.parquet:md5,d0e926a720de0803775b0dbd118b03ac" + "rnaseq.raw.tpm.quant_norm.parquet:md5,e6b853e4614ac4de5f4d00f657189355" ], [ { @@ -154,7 +154,7 @@ "dataset": "microarray_normalised", "platform": "microarray" }, - "microarray.normalised.quant_norm.parquet:md5,0f9ed5a872e8c424a9ccc83b1c33753f" + "microarray.normalised.quant_norm.parquet:md5,362b17780fe521129f49a7e040beee64" ] ], "counts": [ @@ -165,7 +165,7 @@ "dataset": "rnaseq_raw", "platform": "rnaseq" }, - "rnaseq.raw.tpm.quant_norm.parquet:md5,d0e926a720de0803775b0dbd118b03ac" + "rnaseq.raw.tpm.quant_norm.parquet:md5,e6b853e4614ac4de5f4d00f657189355" ], [ { @@ -174,15 +174,15 @@ "dataset": "microarray_normalised", "platform": "microarray" }, - "microarray.normalised.quant_norm.parquet:md5,0f9ed5a872e8c424a9ccc83b1c33753f" + "microarray.normalised.quant_norm.parquet:md5,362b17780fe521129f49a7e040beee64" ] ] } ], + "timestamp": "2026-06-12T08:15:43.823757671", "meta": { - "nf-test": "0.9.3", - "nextflow": "25.10.4" - }, - "timestamp": "2026-03-19T12:26:44.852023368" + "nf-test": "0.9.5", + "nextflow": "25.04.0" + } } } \ No newline at end of file diff --git a/tests/subworkflows/local/genorm/main.nf.test.snap b/tests/subworkflows/local/genorm/main.nf.test.snap index 411b8f60..ffc95b9c 100644 --- a/tests/subworkflows/local/genorm/main.nf.test.snap +++ b/tests/subworkflows/local/genorm/main.nf.test.snap @@ -7,7 +7,7 @@ { "section": "section_1" }, - "m_measures.csv:md5,2119b16fe13e2d0bc0fedc3c9d3d1733" + "m_measures.csv:md5,8aa2220a4aaf776c98b5348c6c03ce17" ] ], "m_measures": [ @@ -15,16 +15,16 @@ { "section": "section_1" }, - "m_measures.csv:md5,2119b16fe13e2d0bc0fedc3c9d3d1733" + "m_measures.csv:md5,8aa2220a4aaf776c98b5348c6c03ce17" ] ] } ], + "timestamp": "2026-06-18T18:22:25.511162076", "meta": { - "nf-test": "0.9.3", - "nextflow": "25.10.4" - }, - "timestamp": "2026-04-01T09:56:47.48692894" + "nf-test": "0.9.5", + "nextflow": "26.04.3" + } }, "10 genes": { "content": [ @@ -34,7 +34,7 @@ { "section": "section_1" }, - "m_measures.csv:md5,8bfea16844f247e2b871a8f559a3dd73" + "m_measures.csv:md5,6fcefb6d5314e83ecca3f448e29475d8" ] ], "m_measures": [ @@ -42,15 +42,15 @@ { "section": "section_1" }, - "m_measures.csv:md5,8bfea16844f247e2b871a8f559a3dd73" + "m_measures.csv:md5,6fcefb6d5314e83ecca3f448e29475d8" ] ] } ], + "timestamp": "2026-06-16T15:54:47.330224093", "meta": { - "nf-test": "0.9.3", - "nextflow": "25.10.4" - }, - "timestamp": "2026-04-01T09:55:53.207791305" + "nf-test": "0.9.5", + "nextflow": "26.04.3" + } } } \ No newline at end of file diff --git a/tests/subworkflows/local/get_public_accessions/main.nf.test.snap b/tests/subworkflows/local/get_public_accessions/main.nf.test.snap index d19a70fb..2b7fbbad 100644 --- a/tests/subworkflows/local/get_public_accessions/main.nf.test.snap +++ b/tests/subworkflows/local/get_public_accessions/main.nf.test.snap @@ -18,11 +18,11 @@ ] } ], + "timestamp": "2026-04-16T12:25:30.194867058", "meta": { "nf-test": "0.9.3", "nextflow": "25.10.4" - }, - "timestamp": "2026-04-16T12:25:30.194867058" + } }, "No GEO + accessions provided": { "content": [ @@ -43,11 +43,11 @@ ] } ], + "timestamp": "2026-04-16T12:25:15.508377196", "meta": { "nf-test": "0.9.3", "nextflow": "25.10.4" - }, - "timestamp": "2026-04-16T12:25:15.508377196" + } }, "Fetch eatlas accessions without keywords": { "content": [ @@ -62,11 +62,11 @@ ] } ], + "timestamp": "2026-04-16T12:25:00.873486754", "meta": { "nf-test": "0.9.3", "nextflow": "25.10.4" - }, - "timestamp": "2026-04-16T12:25:00.873486754" + } }, "With samplling size": { "content": [ @@ -79,10 +79,10 @@ ] } ], + "timestamp": "2026-04-01T14:53:02.05138484", "meta": { "nf-test": "0.9.3", "nextflow": "25.10.4" - }, - "timestamp": "2026-04-01T14:53:02.05138484" + } } } \ No newline at end of file diff --git a/workflows/stableexpression.nf b/workflows/stableexpression.nf index a823a320..0bff1b0c 100644 --- a/workflows/stableexpression.nf +++ b/workflows/stableexpression.nf @@ -132,6 +132,7 @@ workflow STABLEEXPRESSION { params.normalisation_method, params.quantile_norm_target_distrib, params.gff, + params.gff_url, params.gene_length )