Методы для программирования в научной среде? [закрытый]

92
задан 12 revs, 4 users 58% 22 August 2017 в 13:12
поделиться

20 ответов

, Какие языки/среды Вы использовали для разработки научного программного обеспечения, особенно анализ данных? Какие библиотеки? (Например, что Вы используете для графического изображения?)

я раньше работал на Enthought, основной корпоративный спонсор SciPy. Мы сотрудничали с учеными из компаний, которые сократили Enthought на разработку заказного программного обеспечения. Python/SciPy, казалось, был комфортными условиями для ученых. Это намного менее пугающе для начала работы с тем, чем говорят C++ или Java, если Вы - ученый без фона программного обеспечения.

Распределение Enthought Python идет со всеми библиотеками научных вычислений включая анализ, графическое изображение, 3D visualation, и т.д.

Был там каким-либо обучением людям без каких-либо значительных знаний в программировании?

Enthought действительно предлагает , обучение SciPy и сообщество SciPy довольно хорошо об ответе на вопросы в списках рассылки.

у Вас было что-нибудь как управление версиями, отслеживание ошибок?

Да, и да (Subversion и Trac). Так как мы работали совместно с учеными (и обычно удаленно от них), управление версиями и отслеживание ошибок были важны. Потребовалась некоторая тренировка, чтобы заставить некоторых ученых усваивать преимущества управления версиями.

, Как был бы Вы идти о попытке создать достойную среду для программирования, не попадая слишком много путем индивидуальных ученых (особенно физики являются упрямыми людьми!)

Удостоверяются, что они ознакомлены с набором инструментальных средств. Это берет инвестиции впереди, но это заставит их чувствовать себя менее наклоненными для отклонения его в пользу чего-то более знакомого (Excel). Когда инструменты приведут их к сбою (и они будут), удостовериться, что у них есть место для движения для справки — списки рассылки, группы пользователей, другие ученые и разработчики программного обеспечения в организации. Чем больше справки там должно вернуть их к выполнению физики, тем лучше.

27
ответ дан Brandon DuRette 24 November 2019 в 06:33
поделиться

Я не эксперт в этой области, но я всегда понимал, что это - то, для чего был создан MATLAB. Существует способ интегрировать MATLAB с SVN для управления исходным кодом также.

1
ответ дан Peter Mortensen 24 November 2019 в 06:33
поделиться

В первую очередь, я определенно пошел бы с языком сценариев, чтобы избежать необходимости объяснять много дополнительных вещей (например, ручное управление памятью - главным образом - хорошо, если Вы пишете низкий уровень, производительность чувствительный материал, но для кого-то, кто просто хочет использовать компьютер в качестве обновленного научного калькулятора, это - определенно излишество). Кроме того, озирайтесь, если существует что-то специфичное для Вашего домена (как R для статистики). Это имеет преимущество уже работы с понятиями, с которыми пользователи знакомы и специализировавший код для определенных ситуаций (например, вычисление стандартных отклонений, применение статистических тестов, и т.д. в случае R).

, Если бы Вы хотите использовать более универсальный язык сценариев, я пошел бы с Python. Две вещи это имеет движение для него:

  • интерактивная оболочка, где можно экспериментировать
  • Его ясное (хотя иногда длинный) синтаксис

Как добавленное преимущество, это имеет библиотеки для большинства вещей, которые Вы хотели бы сделать с ним.

1
ответ дан Grey Panther 24 November 2019 в 06:33
поделиться

Для управления исходным кодом, централизованные системы такой как Подрывная деятельность выше к научному использованию из-за ясной единственной точки истины (SPOT). Журналирование изменений и способности вспомнить версии любого файла, без наличия упорно ищет, где найти что-то, имеет огромные преимущества ведения записей. Инструменты как Мерзавец и Монотонность : о, боже хаос, я могу вообразить это, следовал бы! Наличие ясных записей, какая версия сценариев задания взлома использовалась, в то время как играющий с новым датчиком, когда, мимо которого прошел бозон Higgs или та сверхновая звезда аварийно завершился, приведет к счастью.

2
ответ дан Peter Mortensen 24 November 2019 в 06:33
поделиться

Определенно, используйте Подрывная деятельность для держания в курсе, происходящие работой, и стабильные копии моментального снимка исходного кода. Это включает C++, Java и т.д. для программных инструментов собственной разработки и беглых сценариев для одноразовой обработки.

С сильной склонностью в науке и примененной разработке к "одинокому ковбою" методология разработки, обычная практика организации репозитория в соединительную линию, тег и независимо от того, что это было - не беспокоится! Ученым и их техническому персоналу лаборатории нравится вращать кнопки, электроды покачивания и вакуумные утечки преследования. Это - действительно задание, чтобы заставить всех соглашаться на, говорить Python / NumPy или следовать некоторому соглашению о присвоении имен; забудьте пытаться заставить их применить тайные методы разработчика программного обеспечения и соглашения.

2
ответ дан Peter Mortensen 24 November 2019 в 06:33
поделиться

, Какие языки/среды Вы использовали для разработки научного программного обеспечения, особенно анализ данных? Какие библиотеки? (Например, что Вы используете для графического изображения?)

Мой студенческий физический факультет преподавал классы LabVIEW и использовал его экстенсивно в его научно-исследовательских работах.

другая альтернатива MATLAB, в котором у меня нет опыта. Существуют лагеря для любого продукта; у каждого есть его собственные преимущества/недостатки. В зависимости от каких проблем необходимо решить, один пакет может быть более предпочтительным, чем другой.

Относительно анализа данных, можно использовать любой вид цифродробилки, которую Вы хотите. Идеально, можно сделать трудные вычисления на языке X и отформатировать вывод для графического изображения приятно в Excel, Mathcad, Mathematica, или независимо от того, что разновидность du подмастерье, выводящее систему на печать. Не ожидайте стандартизацию здесь.

у Вас было что-нибудь как управление версиями, отслеживание ошибок?

Оглядывание назад, которое мы не сделали, и для нас всех будет легче, если мы сделали. Ничто как повреждение всего и попытка в течение многих часов зафиксировать его!

Определенно управление исходным кодом использования для любого общего кода. Поощрите людей писать свой код способом, который мог быть сделан более универсальным. Это действительно просто кодирует лучшие практики. Действительно, у Вас должны быть они обучение (или взятие) класс информатики, таким образом, они могут получить основы.

, Как был бы Вы идти о попытке создать достойную среду для программирования, не попадая слишком много путем индивидуальных ученых (особенно физики являются упрямыми людьми!)

существует ясное разделение между данными aquisition (DAQ) и анализом данных. Значение, возможно стандартизировать на DAQ и затем позволить ученым играть с данными в программе их выбора.

2
ответ дан Peter Mortensen 24 November 2019 в 06:33
поделиться

, Какие языки/среды Вы использовали для разработки научного программного обеспечения, особенно анализ данных? Какие библиотеки? (Например, что Вы используете для графического изображения?)

Python, NumPy и pylab (графическое изображение).

Было там какое-либо обучение людям без каких-либо значительных знаний в программировании?

нет, но я работал в мультимедийной научно-исследовательской лаборатории, поэтому почти у всех был фон информатики.

у Вас было что-нибудь как управление версиями, отслеживание ошибок?

Да, Подрывная деятельность для управления версиями, Trac для трассировки ошибки и Wiki. Можно получить бесплатный хостинг средства отслеживания/управления версиями ошибки от http://www.assembla.com/ если их ТОСЕС соответствия проект.

, Как был бы Вы идти о попытке создать достойную среду для программирования, не попадая слишком много путем индивидуальных ученых (особенно физики являются упрямыми людьми!).

Удостоверяются, что инфраструктура настраивается и хорошо сохраняется и попытка продать преимущества управления исходным кодом.

4
ответ дан Peter Mortensen 24 November 2019 в 06:33
поделиться

Я - статистик в университете в Великобритании. Обычно люди здесь используют R для анализа данных, довольно легко учиться, знаете ли Вы C/Perl. Его действительная мощность находится в способе, которым можно импортировать и изменить данные в интерактивном режиме. Очень легко взять, много говорят CSV (или Excel) файлы и объединяют их, создают новые столбцы на основе других и затем бросают это в GLM, НОЖКУ или некоторую другую модель. Графическое изображение тривиально также и не требует знания совершенно нового языка (как PGPLOT или GNUPLOT.), Конечно, Вы также имеете преимущество наличия набора встроенных функций (от простых вещей как среднее, стандартное отклонение и т.д. полностью к нейронным сетям, шлицам и графическому изображению GL.)

сказавший это, существует несколько проблем. С очень большими наборами данных R может стать очень медленным (я только действительно видел это с> 50,000x30 наборы данных), и так как он интерпретировал Вас, не получают преимущество Fortran/C в этом отношении. Но, Вы можете (очень легко), заставляют R называть C, и Фортран совместно использовал библиотеки (или от чего-то как netlib или от, которые Вы записали сами.) Так, обычный рабочий процесс был бы к:

  • Разрабатывают, что сделать.
  • Моделируют код в R.
  • Выполнение некоторые предварительные исследования.
  • Перезапись медленный код в C или Фортран и вызов это от R.

, Который работает очень хорошо на меня.

я - один из единственных людей в моем отделе (> 100 человек) использующий управление версиями (в моем случае с помощью мерзавца с githuib.com.) Это скорее вызывает беспокойство, но они просто, кажется, не увлечены испытанием его и довольны раздаванием zip-файлов (фу).

Мое предложение должно было бы продолжить использовать LabView для приобретения (и возможно попытаться заставить Ваших коллег договариваться о комплекте инструментальных средств для приобретения, и создание доступно для всех), и затем переместитесь в экспорт данных в CSV (или подобный) и выполнение анализа в R. Существует действительно очень мало точки в перестраивании колеса в этом отношении.

3
ответ дан David Lawrence Miller 24 November 2019 в 06:33
поделиться

Я работаю физиком в британском университете.

, Возможно, я должен подчеркнуть, что различные области исследования имеют другой акцент на программирование. Физики частицы (как dmckee) делают численное моделирование почти исключительно и могут сотрудничать на больших проектах программного обеспечения, тогда как люди в полях как мое собственное (конденсированное вещество) пишут код относительно нечасто. Я подозреваю, что большинство ученых попадает в последний лагерь. Я сказал бы, что кодирующие навыки обычно замечаются, как полезный в физике, но не важный, во многом как навыки физики/математики рассматриваются как полезный для программистов, но не важные. С этим в памяти...

  • , Какие языки/среды Вы использовали для разработки научного программного обеспечения, особенно анализ данных? Какие библиотеки? (Например, что Вы используете для графического изображения?)

Обычно анализ данных и графическое изображение сделаны с помощью универсальных пакетов анализа данных такой в качестве IGOR Pro, ИСТОЧНИК , Kaleidegraph, который может считаться 'Excel плюс'. Эти пакеты обычно имеют язык сценариев, который может использоваться для автоматизации. Больше анализа специалиста может иметь специализированную утилиту для задания, которое обычно будет писаться давным-давно, никто не имеет источник для и довольно ошибочен. Еще некоторые типы техника могли бы использовать языки, которые были упомянуты (Python, R, MatLab с Gnuplot для графического изображения).

программное обеспечение Control обычно делается в LabVIEW, хотя мы на самом деле используем Delphi, который несколько необычен.

  • Было там какое-либо обучение людям без каких-либо значительных знаний в программировании?

я был к семинарам по грид-вычислениям, 3D визуализации, изучив Повышение, и т.д. данное обоими университетами, в которых я был. Как студент нам преподавали VBA для Excel и MatLab, но C/MatLab/LabVIEW более распространен.

  • у Вас было что-нибудь как управление версиями, отслеживание ошибок?

нет, хотя у людей действительно есть персональные установки разработки. Наша кодовая база находится в совместно используемой папке на 'сервере', который держится в курсе синхронизирующего инструмента.

  • , Как был бы Вы идти о попытке создать достойную среду для программирования, не попадая слишком много путем индивидуальных ученых (особенно физики являются упрямыми людьми!)

Один шаг за один раз! Я пытаюсь заменить совместно используемую папку чем-то немного более твердым, возможно, находя клиент SVN, который подражает текущему синхронизирующему поведению инструментов, помог бы.

я сказал бы, хотя в целом, для большинства проектов естествознания, время обычно лучше проводится, проводя исследование!

4
ответ дан Brendan 24 November 2019 в 06:33
поделиться

Я настоятельно рекомендовал бы чтение , "Что Каждый Программист Должен Знать Об Арифметике С плавающей точкой" . Много проблем, с которыми я встречаюсь регулярно, возникает из проблем с программированием с плавающей точкой.

6
ответ дан Alexander L. Belikoff 24 November 2019 в 06:33
поделиться

1.) Языки сценариев популярны в эти дни для большинства вещей из-за лучших аппаратных средств. Perl/Python/Lisp распространен для легких приложений (автоматизация, легкое вычисление); я вижу много Perl на моей работе (вычислительный EM), так как нам нравится Unix/Linux. Для материала производительности обычно используются C/C ++/Fortran. Для параллельных вычислений, ну, в общем, мы обычно вручную параллелизируем выполнения в EM в противоположность наличию программы, неявно делают это (т.е. разделите задания углом взгляда при вычислениях эффективных площадей отражения).

2.) Мы просто вид людей броска в соединение здесь. Много кода, который мы имеем, очень грязно, но ученые обычно являются легкомысленным набором, которые не возражают против такой вещи. Не идеальный, но у нас есть вещи поставить, и мы сильно неукомплектованы. Мы медленно - улучшение.

3.) Мы используем SVN; однако, у нас нет программного обеспечения отслеживания ошибок. Почти столь хороший, как это добирается для нас, txt файл, который говорит Вам, где ошибки определенные ошибки.

4.) Мое предложение для реализации лучших практик для ученых: медленно делают это . Как ученые, мы обычно не поставляем продукты. Никто в науке не делает имя себе при наличии чистого, удобного в сопровождении кода . Они получают распознавание от результатов того кода, обычно. Они должны видеть выравнивание для того, чтобы провести время при изучении методов программного обеспечения. Медленно представляйте новые понятия и пытайтесь заставить их следовать; они - ученые, поэтому после того, как их собственное эмпирическое доказательство подтвердит полноценность вещей как управление версиями, они начнут использовать все это время!

7
ответ дан temp2290 24 November 2019 в 06:33
поделиться

Я не точно 'естественный' ученый (я изучаю транспортировку), но академик, который пишет много моего собственного программного обеспечения для анализа данных. Я пытаюсь записать так, как я могу в Python, но иногда я вынужден использовать другие языки, когда я работаю над расширением или настройкой существующего программного инструмента. В моем поле существует очень мало обучения программированию. Большинство людей или выучилось самостоятельно, или освоило свои навыки программирования от уроков, посещаемых ранее или вне дисциплины.

я - большой поклонник управления версиями. Я использовал Хранилище, работающее на моем домашнем сервере для всего кода для моей диссертации. Прямо сейчас я пытаюсь заставить отдел настраивать сервер Подрывной деятельности, но мое предположение, я буду единственным, кто использует его, по крайней мере, сначала. Я играл вокруг немного с FogBugs, но в отличие от управления версиями, я не думаю, что это почти как полезное для индивидуальной команды.

Что касается ободрительных других для использования управления версиями и т.п. это - действительно проблема, с которой я сталкиваюсь теперь. Я - планирование того, чтобы вынуждать моих студентов градиента использовать его на научно-исследовательских работах, которые они делают для меня и поощряют их использовать его для своего собственного исследования. Если я буду преподавать программирование вовлечения класса, то я, вероятно, буду вынуждать студентов использовать управление версиями там также (градуирующий их на том, что находится в репозитории). Насколько мои коллеги и их студенты градиента идут, все, что я могу действительно сделать, делают сервер доступным и полагаются на мягкое убеждение и подающий хороший пример. Откровенно говоря, в этой точке я думаю, что более важно получить их делающий регулярные резервные копии, чем получают их на управлении исходным кодом (некоторые люди несут вокруг единственной копии их данных исследований по картам флэш-памяти с интерфейсом USB).

9
ответ дан Chris Upchurch 24 November 2019 в 06:33
поделиться

Это могло бы быть немного тангенциальным, но надо надеяться релевантным.

я раньше работал на Национальные Инструменты, R& D, где я записал программное обеспечение для NI РФ & Коммуникационные инструментарии. Мы использовали LabVIEW вполне немного, и здесь являемся методами, которые мы применили:

  1. Управление исходным кодом. NI использует По необходимости. Мы сделали обычную вещь - dev/trunk ответвления, непрерывная интеграция, работы.
  2. Мы записали автоматизированные наборы тестов.
  3. у Нас было несколько человек, которые вошли со знаниями в обработке сигналов и коммуникации. Мы раньше имели регулярные обзоры кода и документы лучших практик, чтобы удостовериться, что их код был в хорошей форме.
  4. Несмотря на обзоры кода, было несколько случаев, когда "парни программного обеспечения", как я должны были переписать часть этого кода для эффективности.
  5. я знаю точно, что Вы имеете в виду об упрямых людях! У нас были люди, которые раньше думали, что указание на потенциальное повышение производительности в их коде было прямым персональным оскорблением! Само собой разумеется, что это это призывает к хорошему управлению. Я думал, что лучший способ иметь дело с этими людьми состоит в том, чтобы медленно идти, не нажимают к трудно для изменений и при необходимости готовы сделать грязную работу. [Пример: запишите набор тестов для их кода].
11
ответ дан Pramod 24 November 2019 в 06:33
поделиться

Ядерный / физика элементарных частиц здесь.

  • Основная работа программирования раньше делалась главным образом в Фортран использование CERNLIB (ЛАПА, MINUIT...) и GEANT3, недавно это было главным образом сделано в C++ с КОРЕНЬ и Geant4. Существует много других библиотек и инструментов в специализированном использовании, и , LabVIEW видит некоторое использование тут и там.
  • Сбор данных в моем конце этого бизнеса часто означал довольно низкоуровневую работу. Часто в C, иногда даже в блоке, но это вымирает, поскольку аппаратные средства становятся более способными. С другой стороны, многие платы теперь создаются с FPGA с, которые должны пропустить вертение...
  • Один-offs, графические интерфейсы, и т.д. используйте почти что-либо (, Tcl/Tk раньше был большим, и я видел больше Perl/Tk и Python/Tk в последнее время) включая многие пакеты, которые существуют главным образом в сообществе физики элементарных частиц.
  • у Многих людей, пишущих код, есть минимальное формальное обучение, и процесс передается очень неравномерно устной традицией, но большинство лидеров группы программного обеспечения относится к процессу серьезно и читает так же по мере необходимости для составления их дефицитов в этой области.
  • Управление версиями для основных инструментов повсеместно. Но многие отдельные программисты пропускают его для своих меньших задач. Формальные инструменты отслеживания ошибок менее распространены, как ночные сборки, поблочное тестирование и регрессионные тесты.

Для улучшения вещей:

  1. Входят в хорошую сторону локальных лидеров программного обеспечения
  2. Реализация процесс, который Вы хотите использовать в своей собственной области, и поощрять тех Вы впускаете для использования его также.
  3. Ожидают. Физики являются эмпирическими людьми. Если это поможет, они будут (в конечном счете!) уведомление.
<час>

Еще одно предложение для улучшения вещей.

  1. Вставленное небольшое время к помощи любому Вы работаете непосредственно с. Рассмотрите их код. Скажите им об алгоритмическом поколении/DRY сложности/кода или безотносительно основной вещи, которую они никогда не изучали, потому что некоторый преподаватель бросил книгу Фортрана в них однажды и сказал, "заставляют его работать". Ознакомьте их по проблемам процесса. Они - умные люди, и они будут учиться, даете ли Вы им шанс.
16
ответ дан Peter Mortensen 24 November 2019 в 06:33
поделиться

Курс Плотницкие работы программного обеспечения нацелены конкретно на людей, делающих научные вычисления, и имеют целью преподавать основы и уроки разработки программного обеспечения, и как лучше всего применить их к проектам.

Это затрагивает темы как управление версиями, отладка, тестирование, пишущий сценарий и различные другие проблемы.

я слушал приблизительно 8 или 9 из лекций и думаю, что это должно быть настоятельно рекомендовано.

Редактирование: MP3s лекций доступны также.

20
ответ дан Peter Mortensen 24 November 2019 в 06:33
поделиться

Экс-академический физик и теперь промышленный физик Великобритания здесь:

, Какие языки/среды Вы использовали для разработки научного программного обеспечения, особенно анализ данных? Какие библиотеки? (Например, что Вы используете для графического изображения?)

я главным образом использую MATLAB в эти дни (легкий получить доступ к функциям визуализации и математике). Я раньше использовал Фортран много и IDL. Я использовал C (но я - больше читатель, чем писатель C), макросы Excel (ужасный и сбивающий с толку). Я должен в настоящее время быть в состоянии считать Java и C++ (но я не могу действительно программировать в них), и я взломал Python также. Для моих собственных развлечений я теперь делаю некоторое программирование в C# (главным образом для получения мобильности / низкая стоимость / симпатичные интерфейсы). Я могу записать Фортран с в значительной степени любым языком, с которым я представлен;-)

Было там какое-либо обучение людям без каких-либо значительных знаний в программировании?

Большинство (все?) студенческий курс физики будет обычно иметь маленький ход программирования о C, Фортране или MATLAB, но это - реальные основы. Я действительно хотел бы иметь некоторое обучение в разработке программного обеспечения в какой-то момент (управление версиями / тестирующий / разработка средних систем масштаба)

, у Вас было что-нибудь как управление версиями, отслеживание ошибок?

я начал использовать Подрывную деятельность / TortoiseSVN относительно недавно. Группы, с которыми я работал в прошлом, использовали управление версиями. Я не знаю академической группы, которая использует формальное программное обеспечение отслеживания ошибок. Я все еще не использую вида систематического тестирования.

, Как был бы Вы идти о попытке создать достойную среду для программирования, не попадая слишком много путем индивидуальных ученых (особенно физики являются упрямыми людьми!)

я попытался бы представить некоторые идеи разработки программного обеспечения на студенческом уровне и затем укрепить их практикой на уровне выпускника, также обеспечить указатели на ресурсы как упомянутый выше курс Плотницких работ программного обеспечения.

я ожидал бы, что значительная часть академических физиков будет писать программное обеспечение (не обязательно все, хотя), и они находятся в страшной потребности, по крайней мере, введения в идеи в разработке программного обеспечения.

4
ответ дан Peter Mortensen 24 November 2019 в 06:33
поделиться

Еще один хороший вариант - Scilab . В нем есть графические модули типа LabVIEW , есть собственный язык программирования, и вы также можете встраивать, например, код Fortran и C. Он используется в государственном и частном секторах, в том числе в крупных промышленных компаниях. И это бесплатно.

Что касается управления версиями, некоторые предпочитают Mercurial , так как он дает больше свободы в управлении и определении репозиториев. Однако у меня нет опыта с этим.

Для построения я использую Matplotlib . Скоро мне придется делать анимацию, и я увидел хорошие результаты с помощью MEncoder . Вот пример , включающий звуковую дорожку.

Наконец, я предлагаю перейти на модульную систему, то есть попытаться сохранить основные части кода в разных файлах, чтобы пересмотреть код, понять, обслуживание и улучшение станет проще. Я написал, например, модуль Python для проверки целостности файлов, другой модуль для последовательностей обработки изображений и т. Д.

Вам также следует рассмотреть возможность разработки с использованием отладчика, который позволяет вам проверять содержимое переменных в устанавливаемых точках останова в коде, вместо этого используйте линии печати. Я использовал Eclipse для разработки Python и Fortran (хотя у меня возникла ложная ошибка при компиляции с ним короткой программы Fortran, но, возможно, это была плохая конфигурация), и я начинаю использовать Eric IDE для Python. Он позволяет вам отлаживать и управлять версиями с помощью SVN , он имеет встроенную консоль, он может выполнять рефакторинг с помощью Bicycle Repair Man (он также может использовать другой), у вас есть Unittest и т. Д. Более легкая альтернатива для Python - IDLE , включенный в Python с версии 2.3.

В качестве нескольких подсказок я также предлагаю:

  • Не использовать односимвольные переменные. Если вы захотите выполнить поиск по внешнему виду, вы получите результаты везде. Некоторые утверждают, что приличная IDE упрощает эту задачу, но тогда вы будете зависеть от постоянного доступа к IDE. Даже использования ii, jj и kk может быть достаточно, хотя этот выбор будет зависеть от вашего языка. (Двойные гласные будут менее полезны, если комментарии к коду сделаны, например, на эстонском языке.)

  • Комментирование кода с самого начала.

  • Для критически важных приложений иногда лучше полагаться на старый язык / версии компилятора (основные выпуски), более стабильные и лучше отлаженные. Конечно, у вас может быть более оптимизированный код в более поздних версиях, исправленные ошибки и т.д., но я говорю об использовании Fortran 95 вместо 2003, Python 2.5.4 вместо 3.0 или около того. (Особенно, когда новая версия нарушает обратную совместимость.) Множество улучшений обычно приводят к множеству ошибок. Тем не менее, это будет зависеть от конкретных случаев применения! Обратите внимание, что это личный выбор, многие люди могут возразить против этого.

  • Используйте резервное и автоматическое резервное копирование! (С контролем версий).

2
ответ дан 24 November 2019 в 06:33
поделиться

Самоорганизующаяся карта (SOM) - это метод кластеризации, рассматриваемый как вариант без учителя искусственной нейронной сети (ИНС) . Он использует методы конкурентного обучения для обучения сети (узлы конкурируют между собой, чтобы показать самую сильную активацию заданных данных)

www.lohninger.com/helpcsuite/kohonen_network_-_background_information.htm

Вы можете думать о SOM, как если бы он состоял из сетки взаимосвязанных узлов (квадрат форма, шестиугольник, ..), где каждый узел представляет собой N-тусклый вектор весов (тот же размер, что и точки данных, которые мы хотим сгруппировать).

Идея проста; учитывая вектор в качестве входных данных для SOM, мы находим узел клозет к нему, затем обновите его веса и веса соседних узлов, чтобы они приблизились к весам входного вектора (отсюда и название самоорганизующиеся). Этот процесс повторяется для всех входных данных.

plotsompos

Формируемые кластеры неявно определяются тем, как узлы организуются и образуют группу узлов с одинаковыми весами. Их легко увидеть визуально.

plotsomnd

SOM похожи на алгоритм K-средних , но отличаются тем, что мы не устанавливаем фиксированное количество кластеров, вместо этого мы указываем количество и форму узлов в сетке, которые мы хотим адаптировать к нашим данным.

Обычно, когда у вас есть обученный SOM, и вы хотите классифицировать новый тестовый входной вектор, вы просто назначаете его ближайшему (расстоянию как меру сходства ) узел сетки ( Best Matching Unit BMU), используется для разработки научных программное обеспечение, особенно анализ данных? какой библиотеки? (Например, что вы используете для

Я вижу здесь множество людей, использующих FORTRAN (в основном 77, но около 90), много Java и немного Python. Мне они не нравятся, поэтому я их не использую.

Был ли тренинг для людей? без какого-либо значительного фона в программирование?

Я думаю, что это не относится ко мне, так как я получил высшее образование в области CS - но там, где я работаю, нет формального обучения, но люди (инженеры, физики, математики) действительно помогают друг другу.

Помогали ли они. у тебя есть что-то вроде версии контроль, отслеживание ошибок?

Контроль версий абсолютно важен! Я храню свой код и данные на трех разных машинах, в двух разных частях света - в репозиториях Git. Я синхронизирую их все время (так что у меня есть система управления версиями и резервных копий!) Я не занимаюсь контролем ошибок, хотя могу начать это делать. Но мои коллеги вообще не используют BTS или VCS.

Как бы вы пытались это сделать? создать достойную среду для программирование, не вдаваясь в подробности на пути личности ученые (особенно физики упрямые люди!)

Во-первых, я бы дал им как можно больше свободы. (В университете, где я работаю, я мог выбирать между тем, чтобы кто-то установил Ubuntu или Windows, или мою собственную ОС - я решил установить свою собственную. У меня нет поддержки от них, и я несу ответственность за все, что происходит с мои машины, включая проблемы с безопасностью, но я делаю с машиной все, что хочу).

Во-вторых, я посмотрю, к чему они привыкли, и заставлю ее работать (нужен FORTRAN? Мы его настроим. Нужен C ++ ? Нет проблем. Mathematica? Хорошо, купим лицензию). Затем посмотрите, сколько из них хотели бы изучить «дополнительные инструменты», которые помогут им работать более продуктивно (не говорите «разные» инструменты. Скажите «дополнительные», чтобы не казалось, что кто-то «проиграет» или «позволит» идти "или что-то еще). Начни с редакторов, Не навязывайте - покажите на примерах, насколько круты эти инструменты Проведите анализ данных с помощью R и покажите им, насколько это просто. Покажите красивую графику и объясните, как вы их создали (но начните с простых примеров, чтобы вы могли быстро объяснить их).

2
ответ дан 24 November 2019 в 06:33
поделиться

Я бы предложил F # в качестве потенциального кандидата для выполнения манипуляций, связанных с наукой, учитывая его сильную семантическую связь с математическими конструкциями.

Кроме того, поддержка единиц измерения, как написано в здесь , имеет большой смысл для обеспечения правильного преобразования между математической моделью и исходным кодом реализации.

2
ответ дан 24 November 2019 в 06:33
поделиться

Я физик, работающий в области физики конденсированного состояния, построение классических и квантовых моделей.

Языки:

  • C ++ - очень универсален: может использоваться для чего угодно, хорошая скорость, но это может быть немного неудобно, когда дело доходит до MPI
  • Octave - для некоторых подходит дополнительные вычисления, очень удобные и производительные

Библиотеки:

  • Armadillo / Blitz ++ - быстрые абстракции массивов / матриц / кубов для C ++
  • Eigen / Armadillo - линейная алгебра
  • GSL - - для использования с C
  • LAPACK / BLAS / ATLAS - чрезвычайно большой и быстрый, но менее удобный (и написанный на FORTRAN)

Графика:

  • GNUPlot - у него очень чистый и аккуратный вывод, но иногда не такой продуктивный
  • Origin - очень удобно для построения графиков

Инструменты разработки:

  • Vim + плагины - - у меня он отлично работает
  • GDB - отличный инструмент для отладки при работе с C / C ++
  • Code :: Blocks - Я использовал его некоторое время и нашел его довольно удобным, но На мой взгляд, Vim все еще лучше.
5
ответ дан 24 November 2019 в 06:33
поделиться
Другие вопросы по тегам:

Похожие вопросы: