
Headergen은 노트북에서 내러티브 구조를 자동으로 생성하여 문서화되지 않은 Python 기반 Jupyter 노트북의 이해와 탐색을 향상시키기위한 도구 기반 접근법입니다.
데이터 과학자들은 먼저 데이터를 준비한 다음 주요 기능을 추출한 다음 모델을 작성하고 교육하여 ML 기반 솔루션 노트를 작성합니다. Headergen은 ML 노트북의 암시 적 이야기 구조를 활용하여 노트북에 주석으로 구조적 헤더를 추가합니다.

pip install headergen
자동 마크 다운 헤더 삽입 : 기계 학습 작업을위한 분류법을 통해 Headergen은 관련 Markdown 헤더와 함께 코드 셀에 주석을 달 수 있습니다.
함수 호출 분류 : 기계 학습 작업 분류법에 따라 기능 호출을 체계적으로 분류합니다.
고급 통화 그래프 분석 : 유량 감도 및 외부 라이브러리 반환 유형 해상도로 PYCG 프레임 워크를 향상시킵니다.
외부 라이브러리의 정밀도 : 타이핑을 사용하여 외부 라이브러리에서 기능 리턴 유형을 정확하게 해결할 수있는 기능.
구문 패턴 매칭 : 패턴 일치에 유형 데이터를 사용합니다.
generate :현재 디렉토리에서 Headergen 주석이없는 노트북을 생성하십시오. Headergen이 처음으로 운행 될 때 캐시가 생성됩니다.
headergen generate -i /path/to/input.ipynb다양한 분석 정보가 포함 된 JSON 메타 데이터 파일을 생성하고 -json_output 또는 -j 플래그를 사용하십시오.
headergen generate -i /path/to/input.ipynb -o /path/to/output/ -jtypes 명령 :파일에서 타이프 추론을 실행하고 유형 정보를 가져 오십시오.
headergen types -i /path/to/input.ipynb유형 정보가 포함 된 JSON 파일을 생성하고 -json_output 또는 -j flag를 사용하십시오.
headergen types -i /path/to/input.ipynb -o /path/to/output/ -jserver 명령 :서버 시작은 간단합니다.
headergen server
이렇게하면 호스트 0.0.0.0 및 포트 54068에서 Uvicorn 서버 청취가 시작됩니다.
이 엔드 포인트는 지정된 노트북 또는 파이썬 스크립트의 분석을 Cell_Callsites 및 Block_Mapping과 같은 분석 데이터를 포함하는 JSON 응답으로 반환합니다.
컬 사용 예 :
curl "http://0.0.0.0:54068/get_analysis_notebook?file_path=/absolute/path/to/your/file.ipynb"
이 엔드 포인트는 지정된 노트북 또는 파이썬 스크립트의 유형 정보를 JSON 응답으로 반환합니다.
컬 사용 예 :
curl "http://0.0.0.0:54068/get_types?file_path=/absolute/path/to/your/file.ipynb"
이 엔드 포인트는 분석에 따라 주석이 달린 노트북을 반환합니다. 응답은 파일 다운로드입니다.
컬 사용 예 :
curl "http://0.0.0.0:54068/generate_annotated_notebook?file_path=/absolute/path/to/your/file.ipynb" --output annotated_file.ipynb
callsites-jupyternb-micro-benchmark : 마이크로 벤치 마크callsites-jupyternb-real-world-benchmark : 실제 벤치 마크evaluation : 수동 헤더 주석 및 사용자 연구 결과 포함framework_models : ML 분류 맵핑에 대한 기능 호출typestub-database : ML 라이브러리의 유형 -STBheadergen : Headergen의 소스 코드pycg_extended : 확장 된 pycg의 소스 코드headergen-extension : HG 용 Jupyter 노트북 플러그인headergen_output : Docker 컨테이너에서 생성 된 노트북이 저장되는 폴더 소스 파일을 얻으십시오
git clone --recursive
git submodule update --init --recursive
git pull --recurse-submodules
리눅스
docker build -t headergen .
docker run -v {$PWD}/headergen_output:/headergen_output -it headergen bash
창
docker build -t headergen .
docker run -v "%cd%"/headergen_output:/headergen_output -it headergen bash
주석이 붙은 노트북, 보고서, 콜트 사이트, 헤더 등과 같은 다음 명령에서 생성 된 출력은 다음 명령이 실행 된 후 로컬 폴더 headergen_output 에 저장됩니다.
마이크로 벤치 마크 (결과가 포함 된 CSV 파일 생성)
make ROOT_PATH=/app/HeaderGen microbench
실제 벤치 마크 (표 2를 재현하는 주석이 달린 노트북 및 CSV 파일 생성)
make ROOT_PATH=/app/HeaderGen realworldbench
두 벤치 마크
make ROOT_PATH=/app/HeaderGen all
청정 생성 된 출력
make clean
소스 파일을 얻으십시오
git clone --recursive
git submodule update --init --recursive
git pull --recurse-submodules
존재하는 경우 클리어 캐시
rm framework_models/models_cache.pickle
rm pycg_extended/machinery/pytd_cache.pickle
setup.sh 스크립트를 사용하여 venv 및 종속성을 설정합니다
./setup.sh -i
마이크로 벤치 마크 (결과가 포함 된 CSV 파일 생성)
make ROOT_PATH=<path to repo root> microbench
실제 벤치 마크 (표 2를 재현하는 주석이 달린 노트북 및 CSV 파일 생성)
make ROOT_PATH=<path to repo root> realworldbench
두 벤치 마크
make ROOT_PATH=<path to repo root> all
청정 생성 된 출력
make clean
이 repo에는 Saner Conference 2023에 발표 된 "정적 분석을 통해 Jupyter 노트북의 이해력 및 탐색 강화" 논문에 대한 코드가 포함되어 있습니다.