Please enable JavaScript.
Coggle requires JavaScript to display documents.
World synchronization via streams: переписать load и saves на streams…
World synchronization via streams: переписать load и saves на streams
Устройство кода
.../common/pipeline/stage.cpp
AssemblyStage::load, ::save
Конвентируются бинарные риды, что-то делается с файлом, что бы узнать его имя делается
io:binary::FullPackIO<Graph>().Load(p, gp) -- что бы загрузить graph pack
debruijn_graph::config::load_lib_data(p) -- что бы загрузить информацию о библиотеках
.../common/io/binary/graph_pack.hpp
class FullPackIO : BasePackIO
Есть функции Save и Load
В самом начале вызывают от base сохранение графа, потом вызывают io::binary::Save() что бы сохранить разные индексы и gp.ginfo.Save() --- что бы сохранить информацию о графе.
.../common/io/binary/io_base.hpp
<T>
void Load(std::string &basename, const T &value) {
IOTraits<T>::Type.Load(basename, value)
}
IOTraits -- это такая штука, которая по типу в шаблоне сообщает где искать штуку, которая будет реализовывать ввод вывод.
Пример:
<Graph>
structure IOTraits<omnigraph::CoverageIndex<Graph>>
typedef CoverageIO<Graph> Type;
}
.../common/io/binary/graph_pack.hpp
BasePackIO
Save and Load
graph
io
.Save что бы сохранить граф
SaveAttached что бы сохранить разные индексы
В Load сначала делается Detach, потом все сохраняется.
.../common/io/binary/basic.hpp
BasicGraphIO: GraphIO
Save и Load
Сначала сохраняется graph через GraphIO потом
io::binary::Save() что бы сохранить coverage_index()
.../comon/io/binary/graph.hpp
GraphIO : IOSingle
Есть классы SaveImpl, LoadImp, функция Load и Save скорее всего берется из IOSingle.
Здесь уже Производится работа с потоками BinOStream/BinIStream
.../common/io/binary/io_base.hpp
IOSingle : IOBase<T>
Создается файл для Save, создается бинарный поток и с использованием этого бинарного потока вызывается SaveImpl
LoadImpl
В BinIStream/BinOStream вызываются функции BinRead/BinWrite у элементов
Load/Save for UnclusteredPairedInfoIndicesT
#
= PairedIndices<UnclusteredPairedInfoIndexT<Graph>>
#
Load/Save for PairedInfoIndicesT
#
PairedInfoIndicesT = PairedIndices<PairedInfoIndexT<Graph>>;
common/io/binary/paired_index.hpp
PairedIndecesIO : IOCollection<PairesIndices>
от IOSingle(PairedIndexIO)
#
.../common/io/binary/paired_index.hpp
PairedIndexIO: IOSingleDefault
#
Load/Save for LongReadContainderT
#
.../common/io/binary/long_reads.hpp
LongReadsIO -- это тип, к которому мы пришли через Traitses
.../common/io/binary/long_reads.hpp
LongReadsIO: IOCollection<LongReadContainder>
Создается коллексиця от unique_ptr от IOSingle.
.../common/io/binary/io_base.hpp
IOCollection: IOBase
Save/Load
Пробегаемся по внутренним элементам коллекции и каждый из элементов коллекции сохраняем в отдельный файл с помощью внутренней сохранялки, в данном случае IOSingle
.../common/io/binary/io_base.hpp
IoSingle создается от IOSingleDefault
Там просто берется и выводится значение в Stream и Всё!
#
GenomicInfo Save/Load
Проверить работу с другими стримами и заменить BinIStream в IOSingle на любой другой стрим, на какую-нибудь обертку над стримами
Создать отдельную ветки от mpi_aug, в которой можно играться :check:
Найти обертку над стримами :check:
BinIStream/BinOStream отличные обертки сами по себе. :red_cross:
На самом деле это так себе идея, потому что она не наследуется от чего надо.
Попробовать поэксперементировать с gzstream :check:
В проекте лежит в ../projects/mts/gzstream/gzstream.h
Заиспользовать где надо в бинарных файликах
Сделать синхронизацию через streams
Сделать функцию которая создает один файл с saves и сохраняет все туда, дяль все Save/Load используют это :check:
Реализовать Save/Load для FullPackIO через is и os :check:
.../common/io/binary/graph_pack.hpp
BasePackIO
Save and Load через is/os :check:
.../common/io/binary/basic.hpp
BasicGraphIO: GraphIO
Save и Load через is/os
Используется название BinRead/BinWrite :check:
.../comon/io/binary/graph.hpp
GraphIO : IOSingle
Есть классы SaveImpl, LoadImp, функция Load и Save скорее всего берется из IOSingle.
Сделать версию IOSingle, которая работат с потоками :check:
Сделать загулушку в IOBase :red_cross:
Переписать Save через потоки для io::binary::Save coverage_index
../common/assembly_graph/core/graph.hpp
Тип CoverageIndex<DeBruijnGraph>
../common/assembly_graph/core/coverage.hpp :green_cross:
Это делается через IOTraits
../common/io/binary/coverage.hpp
CoverageIO :green_cross:
Сделать Save в общем виде, вместе с istreams :green_cross:
BaseCoveragIO :green_cross:
В целом, должно само работать :green_cross:
Уже есть функции Write/Load, которые кажется вполне можно использовать :check:
Использовать эти функции и есть io.Read :check:
Реализовать для SingleIO Read/Write для BinOStream :check:
../common/pipeline/genomic_info_filler.cpp
Сделать write в поток. Как сохранить yaml в бинарный поток? :check:
Для сиреализации, видимо, забить на поток и сохранить как получается. :check:
Реализовать Read/Write для PairedIndices :check:
../common/io/binary/paired_index.hpp :check:
Для IOCollection :check:
Сделать Load/Save в IOBase в .../common/io/binary/io_base.hpp = 0 :red_cross:
Концептуальная проблема: Мы делаем save if is attached, а потом проверяем есть ли файл или нет и только потом скачиваем. Если у нас один поток, то такой возможности нет. Как сделать альтернативу этому? :check:
Сделать сохранение в файл нечто вне зависимости от того было там что-то или нет. Просто иногда файл пустой :check:
Сделать так бы сохранение такое, что бы всегда создавались файлики. :check:
в ../common/io/binary/graph_pack.hpp
If не Attach все равно сохранять скажем что-то пустое :check:
Сделать какой-нибудь SaveEmpty у IOSingle :check:
Поменять понимания что такое Load сделалось.... Типа если сделалася пустой Load, то это ну такое... :check:
../common/io/binary/coverage.hpp
Переписать функции SaveImpl/LoadImpl так что бы там всегда что-то выводилось :check:
Переписать для position
../common/io/binary/position.hpp :check:
Как-то понимать для потока заончился файл или нет
В Stream добавить первый бит о том, есть ли файл или его нет :check:
Отдебажить падение во время загрузки мира :check:
Сделать гибридную функции загрузки мира и с файлом и с save/load что бы проверить в каком именно месте падает. :check:
Сделать для FullPackIO, сначала полностью как обычный Save :check: :green_heart:
Сделать первую загрузку через поток, все остальное через файлы :check: :green_heart:
Сделать HybridSave у уровня BasePackIO :check::green_heart:
Сделать HybridSave/HybridLoad для GraphIO :check: :green_heart:
../common/io/binary/graph.hpp
Сделать для GraphIO SaveImpl/LoadImpl такой что не надо считывать до конца файла, а какой-то конечное количество строк
Сохранять lib_data в тот же стрим :check:
../common/pipeline/config_struct.cpp
load_lib_data/write_lib_data
Что если получится просто вывести in << t и out >> t без всяких изысков?? :red_cross:
Глобально сохранить пытаемся ../common/pipeline/config_struct.hpp
struct dataset {
}
Сделать BinRead/BinWrite для этой штуки :check:
Разобраться как выводить и считывать строки в бинарный формат, что бы они потом правильно разбивались назад
Link Title
:check:
Сделать вспомогательную функцию или посмотреть есть ли она, которая выводит строчки в бинарный файл
Есть функции BinRead и BinWrite для строчек и векторов и мапов :check:
.../common/pipeline/library_data.hpp
Сделать сохранение для LibraryData
#
:check:
Придумать как сделать сохранение для map?? :check:
Отдебажить почему эта штука падает
Проблема, считываетсяя какая-та полная пустота... Почему-то
Попробовать переставить местами сохранение информации и графа и посмотреть что будет
Сделать реализацию для yaml file
Смотреть примеры в /ext/include/llvm/Support/raw_ostream.h
Сделать обертку над raw_ostream и реализовать функцию write. Такое, аля запихать yaml в бинарник :check:
Реализовать raw_stlstream_ostream :red_cross:
Реализовать load через стримы :check:
Сделать сохранение через строчку :check:
Подчистить warnings и прислать Антону ветку посмотреть.
Найти место где я yaml переделывала и вероятно переделать назад.
io/binary/coverage.hpp i < edge_cnt :check:
io/binary/graph.hpp
for(auto v1 : graph) :check:
Исправить скрипт для нового формата файлов :check:
show_grp :check:
show_prd :check:
show_sqn :check:
show_cvr :check:
show_mpr :check:
Проверить как часто и почему падает текущая mpi версия на MBARC на chihua
Написать скрипт, который по очереди запускает 10 раз приписывая разные id на конце и запустить думаться. :check: