{"id":37611035,"url":"https://github.com/brsynth/icfree-ml","last_synced_at":"2026-01-16T10:21:18.775Z","repository":{"id":37417477,"uuid":"447694104","full_name":"brsynth/icfree-ml","owner":"brsynth","description":"Design of experiments (DoE) and machine learning packages for the iCFree project","archived":false,"fork":false,"pushed_at":"2025-02-20T11:41:32.000Z","size":5747,"stargazers_count":5,"open_issues_count":0,"forks_count":2,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-09-09T20:14:08.672Z","etag":null,"topics":["cell-free","design-of-experiments","latin-hypercube-sampling","machine-learning"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/brsynth.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2022-01-13T17:39:28.000Z","updated_at":"2025-02-20T11:34:13.000Z","dependencies_parsed_at":"2023-12-20T15:13:01.643Z","dependency_job_id":"5c766d95-25ef-4c7e-9a9e-6ec8107f55b1","html_url":"https://github.com/brsynth/icfree-ml","commit_stats":null,"previous_names":[],"tags_count":25,"template":false,"template_full_name":null,"purl":"pkg:github/brsynth/icfree-ml","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/brsynth%2Ficfree-ml","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/brsynth%2Ficfree-ml/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/brsynth%2Ficfree-ml/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/brsynth%2Ficfree-ml/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/brsynth","download_url":"https://codeload.github.com/brsynth/icfree-ml/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/brsynth%2Ficfree-ml/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28478049,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-16T06:30:42.265Z","status":"ssl_error","status_checked_at":"2026-01-16T06:30:16.248Z","response_time":107,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cell-free","design-of-experiments","latin-hypercube-sampling","machine-learning"],"created_at":"2026-01-16T10:21:18.065Z","updated_at":"2026-01-16T10:21:18.763Z","avatar_url":"https://github.com/brsynth.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# iCFree\n\niCFree is a Python-based program designed to automate the process of generating and running a Snakemake workflow for sampling and preparing instructions for laboratory experiments. The program includes components for generating samples, creating plates, and instructing the handling of these plates.\n\n## Table of Contents\n\n- [iCFree](#icfree)\n  - [Table of Contents](#table-of-contents)\n  - [Installation](#installation)\n  - [Usage](#usage)\n    - [Basic Command](#basic-command)\n    - [Components](#components)\n      - [Sampler](#sampler)\n        - [Usage](#usage-1)\n        - [Arguments](#arguments)\n      - [Plate Designer](#plate-designer)\n        - [Usage](#usage-2)\n        - [Options](#options)\n      - [Instructor](#instructor)\n        - [Usage](#usage-3)\n        - [Options](#options-1)\n      - [Learner](#learner)\n        - [Usage](#usage-4)\n        - [Options](#options-2)\n    - [Example](#example)\n  - [License](#license)\n  - [Authors](#authors)\n\n## Installation\n\n1. **Install Conda:**\n   - Download the installer for your operating system from the [Conda Installation page](https://docs.conda.io/projects/conda/en/latest/user-guide/install/index.html).\n   - Follow the instructions on the page to install Conda. For example, on Windows, you would download the installer and run it. On macOS and Linux, you might use a command like:\n     ```bash\n     bash ~/Downloads/Miniconda3-latest-Linux-x86_64.sh\n     ```\n   - Follow the prompts on the installer to complete the installation.\n\n2. **Install iCFree from conda-forge:**\n    ```bash\n    conda install -c conda-forge icfree\n    ```\n\n## Usage\n\nThe main entry point of the program is the `__main__.py` file. You can run the program from the command line by providing the necessary arguments for each step of the workflow.\n\n### Basic Command\n\n```bash\npython -m icfree --sampler_input_filename \u003cinput_file\u003e --sampler_nb_samples \u003cnumber_of_samples\u003e --sampler_seed \u003cseed\u003e --sampler_output_filename \u003coutput_file\u003e --plate_designer_input_filename \u003cinput_file\u003e --plate_designer_sample_volume \u003cvolume\u003e --plate_designer_default_dead_volume \u003cdead_volume\u003e --plate_designer_num_replicates \u003creplicates\u003e --plate_designer_well_capacity \u003ccapacity\u003e --plate_designer_start_well_src_plt \u003cstart_well_src\u003e --plate_designer_start_well_dst_plt \u003cstart_well_dst\u003e --plate_generat...\n```\n\n### Components\n\n#### Sampler\nThe sampler.py script generates Latin Hypercube Samples (LHS) for given components.\n\n##### Usage\n\n```bash\npython icfree/sampler.py \u003cinput_file\u003e \u003coutput_file\u003e \u003cnum_samples\u003e [--step \u003cstep_size\u003e] [--seed \u003cseed\u003e]\n```\n\n##### Arguments\n\n- input_file: Input file path with components and their max values.\n- output_file: Output CSV file path for the samples.\n- num_samples: Number of samples to generate.\n- --step: Step size for creating discrete ranges (default: 2.5).\n- --seed: Seed for random number generation for reproducibility (optional).\n\n#### Plate Designer\nThe plate_designer.py script generates plates based on the sampled data.\n\n##### Usage\n\n```bash\npython icfree/plate_designer.py \u003cinput_file\u003e \u003csample_volume\u003e [options]\n```\n\n##### Options\n\n- --default_dead_volume: Default dead volume.\n- --dead_volumes: Dead volumes for specific wells.\n- --num_replicates: Number of replicates.\n- --well_capacity: Well capacity.\n- --start_well_src_plt: Starting well for the source plate.\n- --start_well_dst_plt: Starting well for the destination plate.\n- --extra_wells: Extra wells to add to the plate.\n- --output_folder: Folder to save the output files.\n\n#### Instructor\nThe instructor.py script generates instructions for handling the generated plates.\n\n##### Usage\n\n```bash\npython icfree/instructor.py \u003csource_plate\u003e \u003cdestination_plate\u003e \u003coutput_instructions\u003e [options]\n```\n\n##### Options\n\n- --max_transfer_volume: Maximum transfer volume.\n- --split_threshold: Threshold for splitting components.\n- --source_plate_type: Type of the source plate.\n- --split_components: Components to split.\n- --dispense_order: Comma-separated list of component names specifying the dispensing order.\n\n#### Learner\nThe Learner module carries out an active learning process to both train the model and explore the space of possible cell-free combinations.\n\n##### Usage\n\n```bash\npython -m icfree.learner \u003cdata_folder\u003e \u003cparameter_file\u003e \u003coutput_folder\u003e [options]\n```\n\n##### Options\n\n  - --name_list: a comma-separated string of column names or identifiers, converted to a list of strings representing columns that contain labels (y). This separates y columns from the rest (X features). (Default: Yield1,Yield2,Yield3,Yield4,Yield5)\n  - --test: a flag for validating the model; not required to run inside the active learning loop. If not set, skip the validating step.\n  - --nb_rep NB_REP: the number of test repetitions for validating the model behavior. 80% of data is randomly separated for training, and 20% is used for testing. (Default: 100)\n  - --flatten: a flag to indicate whether to flatten Y data. If set, treats each repetition in the same experiment independently; multiple same X values with different y outputs are modeled. Else, calculates the average of y across repetitions and only model with y average.\n  - --seed SEED: the random seed value used for reproducibility in random operations. (Default: 85)\n  - --nb_new_data_predict: The number of new data points sampled from all possible cases. (Default: 1000)\n  - --nb_new_data: The number of new data points selected from the generated ones. These are the data points labeled after active learning loops. `nb_new_data_predict` must be greater than `nb_new_data` to be meaningful. (Default: 50)\n  - --parameter_step: The step size used to decrement the maximum predefined concentration sequentially. For example, if the maximum concentration is `max`, the sequence of concentrations is calculated as: `max - 1 * parameter_step`, `max - 2 * parameter_step`, `max - 3 * parameter_step`, and so on. Each concentration is a candidate for experimental testing. Smaller steps result in more possible combinations to sample. (Default: 10)\n  - --n_group: parameter for the cluster margin algorithm, specifying the number of groups into which generated data will be clustered. (Default: 15)\n  - --km: parameter for the cluster margin algorithm, specifying the number of data points for the first selection. Ensure `nb_new_data_predict \u003e ks \u003e km`. (Default: 50)\n  - --ks: parameter for the cluster margin algorithm, specifying the number of data points for the second selection. This is also similar to `nb_new_data`. (Default: 20)\n  - --plot: a flag to indicate whether to generate all plots for analysis visualization.\n  - --save_plot: a flag to indicate whether to save all generated plots.\n  - --verbose: flag to indicate whether to print all messages to the console.\n\n### Example\n\nHere is an example of how to run the program with sample data:\n\n```bash\npython -m icfree --sampler_input_filename data/components.csv --sampler_nb_samples 100 --sampler_seed 42 --sampler_output_filename results/samples.csv --plate_designer_input_filename results/samples.csv --plate_designer_sample_volume 10 --plate_designer_default_dead_volume 2 --plate_designer_num_replicates 3 --plate_designer_well_capacity 200 --plate_designer_start_well_src_plt A1 --plate_designer_start_well_dst_plt B1 --plate_designer_output_folder results/plates --instructor_max_transfer_volume...\n```\n\n## License\n\nThis project is licensed under the MIT License. See the LICENSE file for details.\n\n## Authors\n\nChatGPT, OpenAI\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbrsynth%2Ficfree-ml","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbrsynth%2Ficfree-ml","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbrsynth%2Ficfree-ml/lists"}