semvec/pypi-packages huggingface dataset:
otat 0.1.1
Vision-Language Model Interpretability Analysis - One Token at a Time
License: MIT
Requires Python: >=3.10
Keywords: interpretability, vision-language-models, attention, llava, qwen

# Interpretability Core

Vision-Language Model Interpretability Analysis toolkit for analyzing attention patterns in models like LLaVA and Qwen-VL.

## Installation

### From PyPI (when published)
```bash
pip install otat
```

### From GitHub
```bash
pip install git@github.com:varungupta31/otat_api.git
```

### Local Development
```bash
git clone https://github.com/varungupta31/otat_api.git
cd otat_api
pip install -e .
```

## Quick Start
```python
from interpretability.api.wrapper import InterpretabilityAnalyzer

# Initialize analyzer
analyzer = InterpretabilityAnalyzer(
    model_type="llava_onevision",
    model_id="llava-hf/llava-onevision-qwen2-0.5b-ov-hf"
)

# Run analysis
result = analyzer.analyze(
    image_path="path/to/image.jpg",
    task_text="What is in this image?",
    instruction="Answer briefly.",
    blocking_mode="none",
    num_tokens=20
)

print(result['output_tokens'])
print(result['series'])  # Attention patterns
```

## Features

- 🔍 Attention pattern analysis for VLMs
- 🎯 Support for LLaVA, Qwen-VL, and Qwen2-LLM
- 🚫 Attention blocking experiments
- 📊 Token-level attention aggregation

## License

MIT


## **3. Verify Your Project Structure**

Make sure it looks like this:


```
otat_api/  (or interpretability-core/)
├── pyproject.toml          # ✅ Just created
├── README.md               # ✅ Just created
├── LICENSE                 # Optional but recommended
├── .gitignore             # Recommended
├── src/
│   └── interpretability/
│       ├── __init__.py    # ⚠️ Make sure this exists!
│       ├── api/
│       │   ├── __init__.py
│       │   └── wrapper.py
│       ├── models/
│       │   ├── __init__.py
│       │   ├── base_handler.py
│       │   ├── llava_onevision.py
│       │   ├── qwen2_llm.py
│       │   └── qwen_25_vl.py
│       ├── tasks/
│       │   ├── __init__.py
│       │   ├── base_task.py
│       │   ├── web_api_task.py
│       │   └── ...
│       ├── analysis/
│       │   ├── __init__.py
│       │   ├── extractor_aggregated.py
│       │   └── ...
│       ├── utils/
│       │   ├── __init__.py
│       │   └── ...
│       └── prompts/
│           └── ...
└── scripts/
    └── run_analysis.py
```
bhfutils 0.2.3
Utilities that are used by any spider of Behoof project
License: MIT
Keywords: behoof, scrapy-cluster, utilities

******************************
Behoof Scrapy Cluster Template
******************************

Overview
--------

The ``bhfutils`` package is a collection of utilities that are used by any spider of Behoof project.

Requirements
------------

- Unix based machine (Linux or OS X)
- Python 2.7 or 3.6

Installation
------------

Inside a virtualenv, run ``pip install -U bhfutils``.  This will install the latest version of the Behoof Scrapy Cluster Spider utilities.  After that you can use special settings.py compatibal with scrapy cluster (template placed in crawler/setting_template.py)

Documentation
-------------

Full documentation for the ``bhfutils`` package does not exist

custom_cookies.py
==================

The ``custom_cookies`` module is custom Cookies Middleware to pass our required cookies along but not persist between calls

distributed_scheduler.py
========================

The ``distributed_scheduler`` module is scrapy request scheduler that utilizes Redis Throttled Priority Queues to moderate different domain scrape requests within a distributed scrapy cluster

redis_domain_max_page_filter.py
===============================

The ``redis_domain_max_page_filter`` module is redis-based max page filter. This filter is applied per domain. Using this filter the maximum number of pages crawled for a particular domain is bounded 

redis_dupefilter.py
===================

The ``redis_dupefilter`` module is redis-based request duplication filter

redis_global_page_per_domain_filter.py
======================================

The ``redis_global_page_per_domain_filter`` module is redis-based request number filter When this filter is enabled, all crawl jobs have GLOBAL_PAGE_PER_DOMAIN_LIMIT as a hard limit of the max pages they are allowed to crawl for each individual spiderid+domain+crawlid combination.