Skip to content

Commit ce37eb6

Browse files
committed
Merge branch 'master' into issue-311
2 parents b12568a + 1e38098 commit ce37eb6

20 files changed

+1137
-693
lines changed

README.md

Lines changed: 17 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,9 @@ This option provides the latest features but stable releases are more rigorously
5050
./setup.sh
5151
```
5252

53+
### Updating an Existing Installation
54+
When it's time to update your installation of tinyRNA, simply repeat the procedure you used for installation. Note that the existing Conda environment, including any additional packages you may have installed within it, will be removed by the installation script.
55+
5356
## tiny-count Standalone Installation
5457
Alternatively, you can install tinyRNA's precision counting tool by itself. Unlike the full tinyRNA suite, this option can be installed in existing conda environments and requires fewer dependencies.
5558

@@ -250,16 +253,20 @@ Diagnostic information can optionally be produced. If enabled, tiny-count will p
250253

251254
The alignment tables (**... alignment_table.csv**) include the following information per-alignment:
252255

253-
| Column | Description |
254-
|-------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------|
255-
| Sequence | The read sequence, reverse complemented if antisense |
256-
| Normalized Count | The reads available for assignment (the sequence's original read count normalized by genomic hits) |
257-
| Chrom | The alignment's RNAME field |
258-
| Strand | The alignment's strand |
259-
| Start | The alignment's start coordinate |
260-
| End | The alignment's end coordinate |
261-
| Candidates | The number of features overlapping the alignment by at last one nucleotide |
262-
| Assigned Features | Feature IDs of all features assigned to the alignment. `NONE` if no features were assigned. If the assigning rule has a classifier, it is included in parentheses. |
256+
| Column | Description |
257+
|------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
258+
| Sequence | The read sequence, reverse complemented if antisense |
259+
| Raw Count | The sequence's original read count |
260+
| Normalized Count | The reads available for assignment to features (the sequence's original read count optionally normalized by genomic hits) |
261+
| Genomic Hits | The number of alignments produced for the sequence |
262+
| Chrom | The alignment's RNAME field |
263+
| Strand | The alignment's strand |
264+
| Start | The alignment's start coordinate |
265+
| End | The alignment's end coordinate |
266+
| Mismatches | The alignment's reported mismatches between the query sequence and the reference |
267+
| Candidates | The number of features overlapping the alignment by at last one nucleotide |
268+
| Feature Hits | The feature ID and assigning rule's classifier for all features assigned to the alignment, formatted as `(feature_id, classifier); (...)`. If the match was made by an unclassified rule then classifier is left empty. If no features were assigned the cell is left blank. |
269+
| Feature Aliases | The user-defined aliases for all features assigned to the alignment, formatted as `(alias1, alias2, ...); (...)` where the index of each alias grouping matches the index of the corresponding feature in the Feature Hits column. If a feature has no aliases then `()` is reported. |
263270

264271

265272
The unassigned counts table (**assignment_diags.csv**) includes the following, with a column per library:

conda/README.md

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
# For Users
2+
These files are utilized during tinyRNA's setup. During normal usage you shouldn't need to access or modify them. To install or update the tinyRNA environment and codebase, navigate to the project's root directory and run `./setup.sh`
3+
4+
# For Developers
5+
Environment lockfiles allow us to skip Conda's time-intensive preparation steps, e.g. "Solving environment" and "Collecting package metadata", when the user installs/updates the tinyRNA environment.
6+
7+
Dependencies are strictly pinned so that the user's environment exactly matches the environment where testing has been performed.
8+
9+
## Files in this Directory
10+
| File | Description |
11+
|----------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
12+
| `environment_3.[...].yml` | Environment files for different Python versions. These files are platform-agnostic to simplify testing. Just one environment file is needed for creating both the Linux and macOS lockfiles. |
13+
| `environment_template.yml` | Template environment file used for creating new environment files for a specific Python version. |
14+
| `conda-[...]-64.lock` | Platform-specific lockfiles that contain a fully solved dependency tree specification for the latest Python version we support. These are the files that the setup script uses when creating the tinyRNA environment. |
15+
| `env.py` | A script for creating and updating these files. |
16+
17+
## The Development Environment
18+
A separate conda environment is created to hold the dependencies required for creating and updating lockfiles. Keeping development and tinyRNA dependencies separate helps to avoid dependency conflicts.
19+
20+
## Updating the Default Python Version
21+
An environment's Python version determines the environment's dependency tree. Creating specifications for a new Python version is a multi-step process, but a script has been provided to help automate it. **The script can be executed from any environment.**
22+
23+
The idea is to start with a template environment file containing all of our dependencies where nearly all dependencies are unpinned. Normally only the Python version is pinned in the template, but right now Pysam is also pinned because Mamba doesn't currently solve for the version we need by default. We then use Mamba to solve the unpinned dependency versions which are used to create a final, strictly pinned environment file for the new Python version. The new file is then used to create platform-specific lockfiles.
24+
25+
### 1. Create an Environment File for the new Python Version
26+
```shell
27+
python3 env.py new-env --py 3.XX --template environment_template.yml
28+
```
29+
30+
Replace `3.XX` with the target Python version. This command will produce a new environment file named `environment_3.XX.yml` that contains each dependency's solved version.
31+
32+
### 2. Create Platform-Specific Lockfiles
33+
```shell
34+
python3 env.py update-locks --env-file environment_3.XX.yml
35+
```
36+
37+
Replace `environment_3.XX.yml` with the name of the environment file you created in step 1. This command will rebuild the dependency tree in both lockfiles (linux and osx) according to the new environment file.
38+
39+
40+

0 commit comments

Comments
 (0)