2010-12-19 3 views
4

Я заинтересован в портировании библиотеки визуализации javascript protovis на python для использования в научных вычислениях. У меня есть общий вопрос и конкретный вопрос.Портирование библиотеки JavaScript на Python

Общее: Я никогда не переносил целую библиотеку раньше. Какие хорошие стратегии? Должен ли я сначала реализовать API, ориентированный на пользователя, а затем заполнить его в стиле pythonic? Или лучше попробовать сначала перенести внутреннюю структуру/инфраструктуру, а затем перестроить API поверх нее?

Специфично: эта библиотека, похоже, сильно использует наследование на основе прототипов javascript, которое несколько отличается от модели python. Я нашел того, кто сделал довольно простой метод для эмуляции prototypal-inheritance в python. Однако, с точки зрения переноса библиотеки, я бы предпочел не перекручивать python, чтобы быть более похожим на javascript. Любая обратная связь по этому вопросу была бы весьма признательна. Благодаря!

Uri

+3

Начните сверху и проведите свой путь вниз. –

+0

Вы не переносите код с одного языка на другой; слово, которое вы ищете, это * переписать *. –

+0

Почему бы не написать свой научный код в python и позволить графическому интерфейсу быть javascript? –

ответ

1

Вы могли бы быть лучше, глядя на Prefuse (http://www.prefuse.org) или Flare (http://flare.prefuse.org). Первый - это Java, последний Flash.

Protovis немного отличается тем, что это простой старый Javascript, который запускает браузер, используя SVG в качестве холста. Вы не сможете легко использовать это в переписывании Python.

Если вы после пакета график/сетевой визуализации, вы можете проверить NetworkX: http://networkx.lanl.gov/

+0

Спасибо за ссылки. На данный момент меня интересует только статическая визуализация. Я решил, что могу подключить свой порт python к чему-то, что выплевывает SVG, или подключить его к бэкэнду matplotlib. Позже я мог бы попытаться переопределить интерактивность с помощью matplotlib. Что касается протовиса, я нахожу его «декларативную» модель особенно привлекательной и хотел бы воссоздать ее в пакете python, который мог бы интегрироваться во многие научные вычислительные конвейеры. –

+0

SVG + Python = pycairo –

1

Если вы хотите порт из C/C++ в Python вы, вероятно, хотите использовать глотнул. Я не знаю о javascript для python, но вам, вероятно, придется делать это вручную. Я бы рассмотрел наследование прототипов в python unpythonic. Я бы не рекомендовал использовать метакласс-хак, указанный в ссылке. Программисты Python не используются для прототипа наследования и, вероятно, не захотят его использовать, и вы должны быть очень осторожны при использовании метаклассов. Поэтому я считаю, что лучше всего пересмотреть модель наследования. Я также думаю, что редизайн API не помешает сделать его более питоническим.

1

В настоящее время в экосистеме Python отсутствует инструмент визуализации, такой как Protovis, и удачи с вашим переписыванием!

Смежные вопросы