Stop tracking session and AGENTS files
This commit is contained in:
parent
a17a7e448c
commit
8a03269298
99
AGENTS.md
99
AGENTS.md
|
|
@ -1,99 +0,0 @@
|
|||
# AGENTS.md - Codebase Guidelines
|
||||
|
||||
## Project Overview
|
||||
|
||||
This repository contains research code for musical set theory and tonal space analysis, primarily implemented as a Jupyter notebook (`compact_sets_optimized_2.ipynb`). The code deals with harmonic series, pitch class sets, and related musical computations.
|
||||
|
||||
## Build, Lint, and Test Commands
|
||||
|
||||
### Jupyter Notebooks
|
||||
- **Run notebook**: `jupyter notebook compact_sets_optimized_2.ipynb` or `jupyter lab`
|
||||
- **Execute single cell**: Select cell and press `Shift+Enter`
|
||||
- **Run all cells**: `Cell > Run All` in Jupyter menu
|
||||
|
||||
### Python Environment
|
||||
No formal build system or package manager is configured. To run Python code:
|
||||
```bash
|
||||
python3 -m notebook compact_sets_optimized_2.ipynb
|
||||
# or convert to script:
|
||||
jupyter nbconvert --to python compact_sets_optimized_2.ipynb
|
||||
```
|
||||
|
||||
### Testing
|
||||
No test framework is configured. Manual testing is done within the notebook using assert statements and cell-by-cell verification.
|
||||
|
||||
### Linting
|
||||
No linter is configured. For Python files, you may optionally use:
|
||||
```bash
|
||||
ruff check .
|
||||
# or
|
||||
pylint **/*.py
|
||||
```
|
||||
|
||||
## Code Style Guidelines
|
||||
|
||||
### General Principles
|
||||
- Write clear, readable code with meaningful variable names
|
||||
- Add comments for complex mathematical or music theory operations
|
||||
- Keep functions focused on single responsibilities
|
||||
|
||||
### Python Code Style (for any .py files)
|
||||
- **Formatting**: Follow PEP 8
|
||||
- **Line length**: Maximum 100 characters
|
||||
- **Indentation**: 4 spaces (no tabs)
|
||||
- **Naming**:
|
||||
- Functions/variables: `snake_case` (e.g., `hs_array_to_fr`, `expand_pitch`)
|
||||
- Constants: `UPPER_SNAKE_CASE` (e.g., `MAX_OCTAVES`)
|
||||
- Classes: `PascalCase` (if applicable)
|
||||
- **Imports**: Standard library first, then third-party
|
||||
```python
|
||||
from itertools import chain, combinations
|
||||
from math import prod, log
|
||||
import networkx as nx
|
||||
from fractions import Fraction
|
||||
```
|
||||
- **Type hints**: Use when beneficial for clarity
|
||||
- **Error handling**: Use specific exception types, provide meaningful messages
|
||||
|
||||
### Jupyter Notebook Style
|
||||
- Keep cells relatively small and focused
|
||||
- Use markdown cells to explain music theory concepts
|
||||
- Name notebook cells for navigation (view > collapse pnl)
|
||||
- Restart kernel and run all before sharing
|
||||
|
||||
### Key Patterns in This Codebase
|
||||
|
||||
#### Pitch Representation
|
||||
- Pitches stored as tuples: `(octave, harmonic_series_index, ...)`
|
||||
- Example: `(0, 1, 5)` represents the 5th partial of the fundamental
|
||||
|
||||
#### Functions
|
||||
- `hs_array_to_fr`: Convert harmonic series array to frequency ratio
|
||||
- `hs_array_to_cents`: Convert to cents (1200 per octave)
|
||||
- `expand_pitch`/`collapse_pitch`: Manage pitch octave normalization
|
||||
- `transpose_pitch`: Apply pitch transformations
|
||||
|
||||
### File Organization
|
||||
- Main code: `compact_sets_optimized_2.ipynb`
|
||||
- Data: `sirens.txt` (likely reference data for sonic examples)
|
||||
- Audio: `compact_sets_play_siren.scd` (SuperCollider patch)
|
||||
|
||||
## Notes for Agents
|
||||
|
||||
1. **Backup before edits**: The notebook is complex; make backups before major changes
|
||||
2. **Verify calculations**: Musical intervals and frequency calculations should be verified
|
||||
3. **No CI/CD**: This is a research sketch repository; no automated pipelines exist
|
||||
4. **Dependencies**: Key libraries used include `networkx`, `itertools`, `math`, `fractions`
|
||||
|
||||
## Extending This Codebase
|
||||
|
||||
If adding Python files:
|
||||
1. Create a `src/` directory for modules
|
||||
2. Add `pyproject.toml` for package management if needed
|
||||
3. Consider adding `pytest` for testing
|
||||
4. Add type hints to new functions
|
||||
|
||||
If adding notebooks:
|
||||
1. Follow existing naming: `{topic}_optimized_{version}.ipynb`
|
||||
2. Import from shared modules rather than duplicating code
|
||||
3. Use clear markdown headers
|
||||
6468
session-ses_328e.md
6468
session-ses_328e.md
File diff suppressed because one or more lines are too long
Loading…
Reference in a new issue