def copy_to(self, database_book: DatabaseBook) -> 'DatabasePage': if not database_book.exists(): raise FileNotFoundError("Database {} not existing".format(database_book.local_path())) copy_page = DatabasePage(database_book, self.page) if copy_page.exists(): shutil.rmtree(copy_page.local_path()) shutil.copytree(self.local_path(), copy_page.local_path()) return copy_page
def load(book: DatabaseBook): path = book.local_path('book_documents.json') try: with open(path) as f: d = DatabaseBookDocuments.from_book_json(book, json.load(f)) except FileNotFoundError: d = DatabaseBookDocuments(b_id=book.book) return d
def load(book: DatabaseBook): path = book.local_path('book_meta.json') try: with open(path) as f: d = DatabaseBookMeta.from_book_json(book, f.read()) except FileNotFoundError: d = DatabaseBookMeta(id=book.book, name=book.book) return d
from database.database_book import DatabaseBook if __name__ == "__main__": book = DatabaseBook('Graduel_Fully_Annotated') page = book.page('Graduel_de_leglise_de_Nevers_035') pcgts = page.pcgts() pcgts.page.rotate(-0.125) pcgts.to_file(page.file('pcgts').local_path())
def update_book_documents(book: DatabaseBook): d: DatabaseBookDocuments = DatabaseBookDocuments.load(book) db_pages: List[DatabasePage] = book.pages() document_page_ids = [] document_page_names = [] textinitium = '' documents: List[Document] = [] start = None for page_ind, db_page in enumerate(db_pages): page = db_page.pcgts().page if start is not None: document_page_ids.append(page.p_id) document_page_names.append(page.location.page) for ind, t_line in enumerate(page.all_text_lines(), start=1): if t_line.sentence.document_start: if start is None: start = DocumentConnection( line_id=t_line.id, page_id=page.p_id, row=ind, page_name=page.location.page) textinitium = t_line.sentence.text(True) document_page_ids.append(page.p_id) document_page_names.append(page.location.page) else: end_row = ind - 1 if ind - 1 != 0 else len( db_pages[page_ind - 1].pcgts().page.all_text_lines()) end_page = page.location.page if ind - 1 != 0 else db_pages[ page_ind - 1].pcgts().page.location.page documents.append( Document(document_page_ids, document_page_names, start=start, end=DocumentConnection( line_id=t_line.id, page_id=page.p_id, row=end_row, page_name=end_page), textinitium=textinitium)) document_page_ids = [page.p_id] document_page_names = [page.location.page] start = DocumentConnection( line_id=t_line.id, page_id=page.p_id, row=ind, page_name=page.location.page) textinitium = t_line.sentence.text(True) if start is not None: db_page = db_pages[-1] page = db_page.pcgts().page lines = page.all_text_lines() documents.append( Document(document_page_ids, document_page_names, start=start, end=DocumentConnection( line_id=lines[-1].id if len(lines) > 0 else None, page_id=page.p_id, row=len(lines), page_name=page.location.page), textinitium=textinitium)) updated_documents: List[Document] = [] for doc in documents: for orig_doc in d.database_documents.documents: if doc.start == orig_doc.start: updated_doc = orig_doc updated_doc.pages_names = doc.pages_names updated_doc.pages_ids = doc.pages_ids updated_doc.end = doc.end updated_doc.textinitium = doc.textinitium updated_documents.append(updated_doc) break else: updated_documents.append(doc) d.database_documents = Documents(documents=updated_documents) return d
def to_file(self, book: DatabaseBook): self.b_id = book.book s = self.to_json() with open(book.local_path('book_documents.json'), 'w') as f: js = json.dumps(s, indent=2) f.write(js)
end=DocumentConnection( line_id=lines[-1].id if len(lines) > 0 else None, page_id=page.p_id, row=len(lines), page_name=page.location.page), textinitium=textinitium)) updated_documents: List[Document] = [] for doc in documents: for orig_doc in d.database_documents.documents: if doc.start == orig_doc.start: updated_doc = orig_doc updated_doc.pages_names = doc.pages_names updated_doc.pages_ids = doc.pages_ids updated_doc.end = doc.end updated_doc.textinitium = doc.textinitium updated_documents.append(updated_doc) break else: updated_documents.append(doc) d.database_documents = Documents(documents=updated_documents) return d if __name__ == '__main__': b = DatabaseBookDocuments.update_book_documents(DatabaseBook('demo2')) b.to_file(DatabaseBook("demo2")) print(b.to_json())
def to_file(self, book: DatabaseBook): self.id = book.book s = self.to_json(indent=2) with open(book.local_path('book_meta.json'), 'w') as f: f.write(s)
except FileNotFoundError: d = DatabaseBookMeta(id=book.book, name=book.book) return d @staticmethod def from_book_json(book: DatabaseBook, json: str): from database.models.bookstyles import BookStyle, DEFAULT_BOOK_STYLE meta = DatabaseBookMeta.from_json(json) meta.id = book.book if len(meta.name) == 0: meta.name = book.book try: BookStyle.objects.get(id=meta.notationStyle) except BookStyle.DoesNotExist: meta.notationStyle = DEFAULT_BOOK_STYLE return meta def to_file(self, book: DatabaseBook): self.id = book.book s = self.to_json(indent=2) with open(book.local_path('book_meta.json'), 'w') as f: f.write(s) if __name__ == '__main__': b = DatabaseBookMeta.load(DatabaseBook('Graduel')) print(b.to_json())
return ImageOperationList(operations) def __init__(self, pcgts: List[PcGts], params: DatasetParams): params.pad = (0, 10, 0, 20) params.dewarp = False params.staff_lines_only = True params.cut_region = True super().__init__(pcgts, params) if __name__ == '__main__': import matplotlib.pyplot as plt from database.database_book import DatabaseBook from omr.dataset.dataset import LyricsNormalizationParams pages = [p for p in DatabaseBook('Gothic_Test').pages()] params = DatasetParams( height=60, gt_required=True, cut_region=True, pad=[0, 10, 0, 20], page_scale_reference=PageScaleReference.HIGHRES, lyrics_normalization=LyricsNormalizationParams( LyricsNormalization.ONE_STRING), ) if True: page = pages[0] pcgts = PcGts.from_file(page.file('pcgts')) dataset = TextDataset([pcgts], params) calamari_dataset = dataset.to_text_line_calamari_dataset()