CINXE.COM
(IUCr) Towards dynamically configured databases for CIFs: the new modulated structures open database at the Bilbao Crystallographic Server
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head><!-- Journal j --><!-- Article yr5136 --> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>(IUCr) Towards dynamically configured databases for CIFs: the new modulated structures open database at the Bilbao Crystallographic Server</title> <link rel="schema.DC" href="http://purl.org/dc/elements/1.1/" /> <link rel="schema.DCTERMS" href="http://purl.org/dc/terms/" /> <link rel="schema.prism" href="http://prismstandard.org/namespaces/1.2/basic/" /> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> <meta name="twitter:card" content="summary" /> <meta name="twitter:description" content="The conceptual exploitation of the CIF scheme allows the design of databases without deep programming knowledge. With this approach, the modulated structures open database B-IncStrDB, the official International Union of Crystallography repository for this type of material already available through the Bilbao Crystallographic Server, has been re-implemented." /> <meta name="twitter:image" content="https://journals.iucr.org/j/issues/2024/05/00/yr5136/yr5136largethumb.jpg" /> <meta name="twitter:site" content="@JApplCryst" /> <meta name="twitter:title" content="Towards dynamically configured databases for CIFs: the new modulated structures open database at the Bilbao Crystallographic Server" /> <meta property="og:description" content="The conceptual exploitation of the CIF scheme allows the design of databases without deep programming knowledge. With this approach, the modulated structures open database B-IncStrDB, the official International Union of Crystallography repository for this type of material already available through the Bilbao Crystallographic Server, has been re-implemented." /> <meta property="og:image" content="https://journals.iucr.org/j/issues/2024/05/00/yr5136/yr5136largethumb.jpg" /> <meta property="og:image:alt" content="Image from Towards dynamically configured databases for CIFs: the new modulated structures open database at the Bilbao Crystallographic Server" /> <meta property="og:image:height" content="300" /> <meta property="og:image:secureurl" content="https://journals.iucr.org/j/issues/2024/05/00/yr5136/yr5136largethumb.jpg" /> <meta property="og:image:type" content="image/jpeg" /> <meta property="og:image:width" content="300" /> <meta property="og:locale" content="en_US" /> <meta property="og:site_name" content="Journal of Applied Crystallography" /> <meta property="og:title" content="Towards dynamically configured databases for CIFs: the new modulated structures open database at the Bilbao Crystallographic Server" /> <meta property="og:type" content="article" /> <meta property="og:updated_time" content="2024-10-01T19:53:22Z" /> <meta property="og:url" content="https://journals.iucr.org/j/issues/2024/05/00/yr5136/" /> <meta name="DC.copyright" content="https://creativecommons.org/licenses/by/4.0/" /> <meta name="DC.coverage" content="" /> <meta name="DC.creator" content="Gabirondo-López, J." /> <meta name="DC.creator" content="Gabirondo-López, I." /> <meta name="DC.creator" content="Tasci, E.S." /> <meta name="DC.creator" content="Madariaga, G." /> <meta name="authors" content="Gabirondo-López, J.|Gabirondo-López, I.|Tasci, E.S.|Madariaga, G." /> <meta name="DC.date" content="2024-09-17" /> <meta name="DC.description" content="This article presents a web-based framework to build a database without in-depth programming knowledge given a set of CIF dictionaries and a collection of CIFs. The framework consists of two main elements: the public site that displays the information contained in the CIFs in an ordered manner, and the restricted administrative site which defines how that information is stored, processed and, eventually, displayed. Thus, the web application allows users to easily explore, filter and access the data, download the original CIFs, and visualize the structures via JSmol. The modulated structures open database B-IncStrDB, the official International Union of Crystallography repository for this type of material and available through the Bilbao Crystallographic Server, has been re-implemented following the proposed framework." /> <meta name="DC.format" content="text/html" /> <meta name="DC.identifier" content="doi:10.1107/S1600576724007908" /> <meta name="DC.language" content="en" /> <meta name="DC.link" content="https://journals.iucr.org/paper?yr5136" /> <meta name="DC.publisher" content="International Union of Crystallography" /> <meta name="DC.relation" content="" /> <meta name="DC.rights" content="https://creativecommons.org/licenses/by/4.0/" /> <meta name="DC.source" content="urn:issn:1600-5767" /> <meta name="DC.subject" content="MODULATED STRUCTURES OPEN DATABASE" /> <meta name="DC.subject" content="CIF VALIDATION" /> <meta name="DC.subject" content="PYTHON WEB DEVELOPMENT" /> <meta name="DC.subject" content="BILBAO CRYSTALLOGRAPHIC SERVER" /> <meta name="DC.teaser" content="The conceptual exploitation of the CIF scheme allows the design of databases without deep programming knowledge. With this approach, the modulated structures open database B-IncStrDB, the official International Union of Crystallography repository for this type of material already available through the Bilbao Crystallographic Server, has been re-implemented." /> <meta name="description" content="Towards dynamically configured databases for CIFs: the new modulated structures open database at the Bilbao Crystallographic Server" /> <meta name="title" content="Towards dynamically configured databases for CIFs: the new modulated structures open database at the Bilbao Crystallographic Server" /> <meta name="DC.title" content="Towards dynamically configured databases for CIFs: the new modulated structures open database at the Bilbao Crystallographic Server" /> <meta name="DC.type" content="CIF applications" /> <meta name="DCTERMS.abstract" content="This article presents a web-based framework to build a database without in-depth programming knowledge given a set of CIF dictionaries and a collection of CIFs. The framework consists of two main elements: the public site that displays the information contained in the CIFs in an ordered manner, and the restricted administrative site which defines how that information is stored, processed and, eventually, displayed. Thus, the web application allows users to easily explore, filter and access the data, download the original CIFs, and visualize the structures via JSmol. The modulated structures open database B-IncStrDB, the official International Union of Crystallography repository for this type of material and available through the Bilbao Crystallographic Server, has been re-implemented following the proposed framework." /> <meta name="prism.copyright" content="https://creativecommons.org/licenses/by/4.0/" /> <meta name="prism.doi" content="https://doi.org/10.1107/S1600576724007908" /> <meta name="prism.eissn" content="1600-5767" /> <meta name="prism.endingPage" content="1649" /> <meta name="prism.issn" content="1600-5767" /> <meta name="prism.number" content="5" /> <meta name="prism.publicationDate" content="2024-09-17" /> <meta name="prism.publicationName" content="Journal of Applied Crystallography" /> <meta name="prism.rightsAgent" content="med@iucr.org" /> <meta name="prism.section" content="CIF applications" /> <meta name="prism.startingPage" content="1640" /> <meta name="prism.volume" content="57" /> <meta name="keywords" content="MODULATED STRUCTURES OPEN DATABASE; CIF VALIDATION; PYTHON WEB DEVELOPMENT; BILBAO CRYSTALLOGRAPHIC SERVER" /> <meta name="copyright" content="https://creativecommons.org/licenses/by/4.0/" /> <meta name="ROBOTS" content="NOARCHIVE" /> <meta name="citation_abstract" content="This article presents a web-based framework to build a database without in-depth programming knowledge given a set of CIF dictionaries and a collection of CIFs. The framework consists of two main elements: the public site that displays the information contained in the CIFs in an ordered manner, and the restricted administrative site which defines how that information is stored, processed and, eventually, displayed. Thus, the web application allows users to easily explore, filter and access the data, download the original CIFs, and visualize the structures via JSmol. The modulated structures open database B-IncStrDB, the official International Union of Crystallography repository for this type of material and available through the Bilbao Crystallographic Server, has been re-implemented following the proposed framework." /> <meta name="citation_abstract_html_url" content="https://journals.iucr.org/paper?yr5136" /> <meta name="citation_author" content="Gabirondo-López, J." /> <meta name="citation_author_institution" content="Department of Physics, University of the Basque Country UPV/EHU, Apartado 644, 48080 Bilbao, Spain" /> <meta name="citation_author_email" content="jon.gabirondol@ehu.eus" /> <meta name="citation_author" content="Gabirondo-López, I." /> <meta name="citation_author_institution" content="Department of Physics, University of the Basque Country UPV/EHU, Apartado 644, 48080 Bilbao, Spain" /> <meta name="citation_author" content="Tasci, E.S." /> <meta name="citation_author_institution" content="Department of Physics Engineering, Hacettepe University, Ankara 06800, Türkiye" /> <meta name="citation_author_email" content="emre.tasci@hacettepe.edu.tr" /> <meta name="citation_author" content="Madariaga, G." /> <meta name="citation_author_institution" content="Department of Physics, University of the Basque Country UPV/EHU, Apartado 644, 48080 Bilbao, Spain" /> <meta name="citation_author_email" content="gotzon.madariaga@ehu.eus" /> <meta name="citation_date" content="2024-10-01" /> <meta name="citation_doi" content="10.1107/S1600576724007908" /> <meta name="citation_firstpage" content="1640" /> <meta name="citation_fulltext_url" content="https://journals.iucr.org/j/issues/2024/05/00/yr5136/" /> <meta name="citation_fulltext_world_readable" content=""/> <meta name="citation_issn" content="1600-5767" /> <meta name="citation_issue" content="5" /> <meta name="citation_journal_abbrev" content="J Appl Cryst" /> <meta name="citation_journal_abbrev" content="J Appl Crystallogr" /> <meta name="citation_journal_title" content="Journal of Applied Crystallography" /> <meta name="citation_keywords" content="MODULATED STRUCTURES OPEN DATABASE; CIF VALIDATION; PYTHON WEB DEVELOPMENT; BILBAO CRYSTALLOGRAPHIC SERVER" /> <meta name="citation_language" content="en" /> <meta name="citation_lastpage" content="1649" /> <meta name="citation_online_date" content="2024-09-17" /> <meta name="citation_pdf_url" content="https://journals.iucr.org/j/issues/2024/05/00/yr5136/yr5136.pdf" /> <meta name="citation_publisher" content="International Union of Crystallography" /> <meta name="citation_reference" content="citation_author=Allen F. H.; citation_author=Barnard J. M.; citation_author=Cook A. P. F.; citation_author=Hall S. R.; citation_year=1995; citation_journal_title=J. Chem. Inf. Comput. Sci.; citation_volume=35; citation_firstpage=412; citation_lastpage=427; "/> <meta name="citation_reference" content="citation_author=Allen F. H.; citation_author=Johnson O.; citation_author=Shields G. P.; citation_author=Smith B. R.; citation_author=Towler M.; citation_year=2004; citation_journal_title=J. Appl. Cryst.; citation_volume=37; citation_firstpage=335; citation_lastpage=338; "/> <meta name="citation_reference" content="citation_author=Aroyo M. I.; citation_author=Perez-Mato J. M.; citation_author=Capillas C.; citation_author=Kroumova E.; citation_author=Ivantchev S.; citation_author=Madariaga G.; citation_author=Kirov A.; citation_author=Wondratschek H.; citation_year=2006; citation_journal_title=Z. Kristallogr. Cryst. Mater.; citation_volume=221; citation_firstpage=15; citation_lastpage=27; "/> <meta name="citation_reference" content="Berman, H., Bernstein, H., Ellis, P., Feng, Z., Hall, S., Hoyland, M., McMahon, B., Spadaccini, N., Strickland, P., Westbrook, J. & Yang, H. (2006). International Tables for Crystallography, Vol. G, ch. 5, pp. 481-568. Chester: IUCr"/> <meta name="citation_reference" content="citation_author=Bernstein F. C.; citation_author=Koetzle T. F.; citation_author=Williams G. J. B.; citation_author=Meyer E. F. Jr; citation_author=Brice M. D.; citation_author=Rodgers J. R.; citation_author=Kennard O.; citation_author=Shimanouchi T.; citation_author=Tasumi M.; citation_year=1977; citation_journal_title=Eur. J. Biochem.; citation_volume=80; citation_firstpage=319; citation_lastpage=324; "/> <meta name="citation_reference" content="Bernstein, H. J. & Hammersley, A. P. (2006). International Tables for Crystallography, Vol. G, ch. 2.3, pp. 37-43. Chester: IUCr."/> <meta name="citation_reference" content="Blatov, V. A., Hanson, R. M. & Proserpio, D. M. (2021). Topology CIF Dictionary, https://www.iucr.org/__data/iucr/cif/dictionaries/cif_topology_0.9.6.dic.pdf."/> <meta name="citation_reference" content="citation_author=Brown I. D.; citation_year=1983; citation_journal_title=Acta Cryst. A; citation_volume=39; citation_firstpage=216; citation_lastpage=224; "/> <meta name="citation_reference" content="citation_author=Chapuis G.; citation_author=Farkas-Jahnke M.; citation_author=Pérez-Mato J. M.; citation_author=Senechal M.; citation_author=Steurer W.; citation_author=Janot C.; citation_author=Pandey D.; citation_author=Yamamoto A.; citation_year=1997; citation_journal_title=Acta Cryst. A; citation_volume=53; citation_firstpage=95; citation_lastpage=100; "/> <meta name="citation_reference" content="citation_author=Crennell K. M.; citation_author=Brown I. D.; citation_year=1985; citation_journal_title=J. Mol. Graph.; citation_volume=3; citation_firstpage=40; citation_lastpage=49; "/> <meta name="citation_reference" content="Django Software Foundation (2019). Django, https://djangoproject.com."/> <meta name="citation_reference" content="citation_author=Fire M.; citation_author=Guestrin C.; citation_year=2019; citation_journal_title=GigaScience; citation_volume=8; citation_firstpage=giz053.; "/> <meta name="citation_reference" content="citation_author=Gallego S. V.; citation_author=Perez-Mato J. M.; citation_author=Elcoro L.; citation_author=Tasci E. S.; citation_author=Hanson R. M.; citation_author=Aroyo M. I.; citation_author=Madariaga G.; citation_year=2016; citation_journal_title=J. Appl. Cryst.; citation_volume=49; citation_firstpage=1941; citation_lastpage=1956; "/> <meta name="citation_reference" content="citation_author=Gallego S. V.; citation_author=Perez-Mato J. M.; citation_author=Elcoro L.; citation_author=Tasci E. S.; citation_author=Hanson R. M.; citation_author=Momma K.; citation_author=Aroyo M. I.; citation_author=Madariaga G.; citation_year=2016; citation_journal_title=J. Appl. Cryst.; citation_volume=49; citation_firstpage=1750; citation_lastpage=1776; "/> <meta name="citation_reference" content="citation_author=Gildea R. J.; citation_author=Bourhis L. J.; citation_author=Dolomanov O. V.; citation_author=Grosse-Kunstleve R. W.; citation_author=Puschmann H.; citation_author=Adams P. D.; citation_author=Howard J. A. K.; citation_year=2011; citation_journal_title=J. Appl. Cryst.; citation_volume=44; citation_firstpage=1259; citation_lastpage=1263; "/> <meta name="citation_reference" content="citation_author=Gražulis S.; citation_author=Chateigner D.; citation_author=Downs R. T.; citation_author=Yokochi A. F. T.; citation_author=Quirós M.; citation_author=Lutterotti L.; citation_author=Manakova E.; citation_author=Butkus J.; citation_author=Moeck P.; citation_author=Le Bail A.; citation_year=2009; citation_journal_title=J. Appl. Cryst.; citation_volume=42; citation_firstpage=726; citation_lastpage=729; "/> <meta name="citation_reference" content="citation_author=Grosse-Kunstleve R. W.; citation_author=Sauter N. K.; citation_author=Moriarty N. W.; citation_author=Adams P. D.; citation_year=2002; citation_journal_title=J. Appl. Cryst.; citation_volume=35; citation_firstpage=126; citation_lastpage=136; "/> <meta name="citation_reference" content="citation_author=Hall S. R.; citation_author=Allen F. H.; citation_author=Brown I. D.; citation_year=1991; citation_journal_title=Acta Cryst. A; citation_volume=47; citation_firstpage=655; citation_lastpage=685; "/> <meta name="citation_reference" content="Hall, S. R. & Cook, A. P. F. (2006). International Tables for Crystallography, Vol. G, ch. 2.5, pp. 53-60. Chester: IUCr."/> <meta name="citation_reference" content="Hall, S. R. & McMahon, B. (2006). Editors. International Tables for Crystallography, Vol. G, Definition and Exchange of Crystallographic Data. Chester: IUCr."/> <meta name="citation_reference" content="citation_author=Hanson R. M.; citation_author=Prilusky J.; citation_author=Renjian Z.; citation_author=Nakane T.; citation_author=Sussman J. L.; citation_year=2013; citation_journal_title=Isr. J. Chem.; citation_volume=53; citation_firstpage=207; citation_lastpage=216; "/> <meta name="citation_reference" content="citation_author=Hester J. R.; citation_year=2006; citation_journal_title=J. Appl. Cryst.; citation_volume=39; citation_firstpage=621; citation_lastpage=625; "/> <meta name="citation_reference" content="Hipp, R. D. (2020). SQLite, https://www.sqlite.org/index.html."/> <meta name="citation_reference" content="Madariaga, G. (2006). International Tables for Crystallography, Vol. G, ch. 4.3, pp. 270-289. Chester: IUCr."/> <meta name="citation_reference" content="McMahon, B. (1998). VCIF: a Utility to Validate the Syntax of a Crystallographic Information File, https://www.iucr.org/iucr-top/cif/software/vcif/index.html."/> <meta name="citation_reference" content="McMahon, B. (2006a). International Tables for Crystallography, Vol. G, ch. 3.1, pp. 88-89. Chester: IUCr."/> <meta name="citation_reference" content="McMahon, B. (2006b). International Tables for Crystallography, Vol. G, ch. 5.3, pp. 499-525. Chester: IUCr."/> <meta name="citation_reference" content="citation_author=Merkys A.; citation_author=Vaitkus A.; citation_author=Butkus J.; citation_author=Okulič-Kazarinas M.; citation_author=Kairys V.; citation_author=Gražulis S.; citation_year=2016; citation_journal_title=J. Appl. Cryst.; citation_volume=49; citation_firstpage=292; citation_lastpage=301; "/> <meta name="citation_reference" content="citation_author=Petříček V.; citation_author=Dušek M.; citation_author=Palatinus L.; citation_year=2014; citation_journal_title=Z. Kristallogr. Cryst. Mater.; citation_volume=229; citation_firstpage=345; citation_lastpage=352; "/> <meta name="citation_reference" content="citation_author=Petříček V.; citation_author=Palatinus L.; citation_author=Plášil J.; citation_author=Dušek M.; citation_year=2023; citation_journal_title=Z. Kristallogr. Cryst. Mater.; citation_volume=238; citation_firstpage=271; citation_lastpage=282; "/> <meta name="citation_reference" content="citation_author=Ren Y.; citation_author=Baas J.; citation_author=Meetsma A.; citation_author=de Boer J. L.; citation_author=Wiegers G. A.; citation_year=1996; citation_journal_title=Acta Cryst. B; citation_volume=52; citation_firstpage=398; citation_lastpage=405; "/> <meta name="citation_reference" content="citation_author=Smaalen S. van; citation_year=1991; citation_journal_title=Phys. Rev. B; citation_volume=43; citation_firstpage=11330; citation_lastpage=11341; "/> <meta name="citation_reference" content="citation_author=Spadaccini N.; citation_author=Hall S. R.; citation_year=2012; citation_journal_title=J. Chem. Inf. Model.; citation_volume=52; citation_firstpage=1907; citation_lastpage=1916; "/> <meta name="citation_reference" content="citation_author=Spek A. L.; citation_year=2003; citation_journal_title=J. Appl. Cryst.; citation_volume=36; citation_firstpage=7; citation_lastpage=13; "/> <meta name="citation_reference" content="citation_author=Spek A. L.; citation_year=2020; citation_journal_title=Acta Cryst. E; citation_volume=76; citation_firstpage=1; citation_lastpage=11; "/> <meta name="citation_reference" content="citation_author=Todorov G.; citation_author=Bernstein H. J.; citation_year=2008; citation_journal_title=J. Appl. Cryst.; citation_volume=41; citation_firstpage=808; citation_lastpage=810; "/> <meta name="citation_reference" content="Twitter (2019). Bootstrap, https://getbootstrap.com."/> <meta name="citation_reference" content="citation_author=Vaitkus A.; citation_author=Merkys A.; citation_author=Gražulis S.; citation_year=2021; citation_journal_title=J. Appl. Cryst.; citation_volume=54; citation_firstpage=661; citation_lastpage=672; "/> <meta name="citation_reference" content="Van Rossum, G. & Drake, F. L. (2009). Python 3 Reference Manual. Scotts Valley,: CreateSpace."/> <meta name="citation_reference" content="citation_author=Westrip S. P.; citation_year=2010; citation_journal_title=J. Appl. Cryst.; citation_volume=43; citation_firstpage=920; citation_lastpage=925; "/> <meta name="citation_reference" content="Widenius, M., Axmark, D. & DuBois, P. (2002). Mysql Reference Manual. Sebastopol: O'Reilly."/> <meta name="citation_title" content="Towards dynamically configured databases for CIFs: the new modulated structures open database at the Bilbao Crystallographic Server" /> <meta name="citation_volume" content="57" /> <meta name="citation_year" content="2024" /> <!-- <rdf:RDF xmlns="http://web.resource.org/cc/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <Work rdf:about="https://journals.iucr.org/paper?yr5136"> <license rdf:resource="http://creativecommons.org/licenses/by/4.0/" /> <dc:title>Towards dynamically configured databases for CIFs: the new modulated structures open database at the Bilbao Crystallographic Server</dc:title> </Work> <License rdf:about="http://creativecommons.org/licenses/by/4.0/"> <permits rdf:resource="http://creativecommons.org/ns#Reproduction"/> <permits rdf:resource="http://creativecommons.org/ns#Distribution"/> <requires rdf:resource="http://creativecommons.org/ns#Notice"/> <requires rdf:resource="http://creativecommons.org/ns#Attribution"/> <permits rdf:resource="http://creativecommons.org/ns#DerivativeWorks"/> </License> </rdf:RDF> --> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <link rel="stylesheet" href="//code.jquery.com/ui/1.10.0/themes/base/jquery-ui.css" /> <link rel="stylesheet" type="text/css" href="/style/debugging.css"/> <link rel="stylesheet" type="text/css" href="/style/iustyle1.css"/> <link rel="stylesheet" type="text/css" href="/style/iustyle2.css" media="all and (min-width: 20px)" /> <!--[if !IE]>--> <!-- <link media="only screen and (max-device-width: 480px)" href="/style/iustyle2.css" type= "text/css" rel="stylesheet"> --> <!--<![endif]--> <!--[if (lt IE 9)&(!IEMobile)]> <link rel="stylesheet" href="/style/iustyle2.css" media="all" /> <link rel="stylesheet" href="/style/iustyle3.css" media="all" /> <![endif]--> <link rel="stylesheet" type="text/css" href="/style/iustyleprint.css" media="print"/> <!-- call in additional libraries for semantic tagging etc. --> <script src="https://journals.iucr.org/javascript/analytics.js"></script> </head> <body> <!-- body class="iucrjournals"--> <!-- body onload="document.getElementById('optionbuttons').style.display = 'inline';getHighlights();checkDisplay();"--> <!-- body class="iucrdictcontent"--><div id="jpage_j"><div id="article"> <div id="header"> <div id="hd_top"> <div id="hd_icon"> <table id="hd_jicon" class="layout" style=""><tr><td><a href="/j"><img alt="Journal logo" class="jicon" src="//journals.iucr.org/logos/jicons/j_96x112.png" /></a></td><td><span class="hd_jicon_actatitle">Journal of Applied Crystallography</span> <span class="hd_jicon_actatitle_narrow">Journal of Applied<br/>Crystallography</span> </td></tr></table> </div><!-- end of div hd_icon --> <div id="hd_right"> <div id="hd_mlink"> <a class="hd_blink" id="hd_cjoi" title="Crystallography Journals Online" href="//journals.iucr.org"><img alt="Journals Logo" src="//journals.iucr.org/logos/iucr_journals_logo_spaces.png" height="20"/></a> <a class="hd_blink" id="hd_iucr" title="International Union of Crystallography" href="https://www.iucr.org">IUCr</a> <a class="hd_blink" id="hd_it" title="International Tables" href="https://it.iucr.org">IT</a> <a class="hd_blink" id="hd_wdc" title="World Directory of Crystallographers" href="https://wdc.iucr.org">WDC</a> </div><!-- end of id "hd_mlink" --> <form id="hd_search_form" class="inputWrap" action="//scripts.iucr.org/cgi-bin/full_search" method="post" accept-charset="utf-8"> <div id="hd_search"> <label for="hd_words">search IUCr Journals</label><input type="text" name="words" value="" id="hd_words" title="Search IUCr Journals" /> <input type="submit" name="Action" value="GO" id="hd_go" /> </div><!-- end of id "hd_search" --> </form> </div><!-- end of id "hd_right" --> </div><!-- end of id "hd_top" --> <div class="clear"></div> <div id="hd_navigate"> <a class="hd_navlink" href="/j/">home </a> <a class="hd_navlink" href="/j/services/archive.html">archive </a> <a class="hd_navlink" href="/j/services/editors.html">editors </a> <a class="hd_navlink" href="/j/services/authorservices.html">for authors </a> <a class="hd_navlink" href="/j/services/readerservices.html">for readers </a> <a class="hd_navlink" href="/j/services/submit.html">submit </a> <a class="hd_navlink" href="/services/subscriberservices.html">subscribe </a> <a class="hd_navlink" href="/j/services/openaccess.html">open access </a> </div><!-- End of div hd_navigate --> <div id="hd_navigatesmall"> <div class="hd_navigatetitle hide"> <img src="/logos/arrows/smarrr_white.png" alt="" class=""/><img src="/logos/arrows/smarrd_white.png" alt="" class="hide"/>journal menu</div> <div class="sitelink hide"> <a class="hd_navlink" href="/j/">home </a> <a class="hd_navlink" href="/j/services/archive.html">archive </a> <a class="hd_navlink" href="/j/services/editors.html">editors </a> <a class="hd_navlink" href="/j/services/authorservices.html">for authors </a> <a class="hd_navlink" href="/j/services/readerservices.html">for readers </a> <a class="hd_navlink" href="/j/services/submit.html">submit </a> <a class="hd_navlink" href="/services/subscriberservices.html">subscribe </a> <a class="hd_navlink" href="/j/services/openaccess.html">open access </a> </div> </div><!-- End of div hd_navigatesmall --> </div><!-- end of id "header" --> <div id="pagebody"> <div class="layout_cjo_singlecolumn"> <div id="main" class='article' style=""> <div id="art_leftbox"> <div class="article_functions af_vertical"> <!-- AF: yr5136 issuecontents --> <div class="bubbleInfo"> <div class="sidebutton"> <a href="/j/issues/2024/05/00/index.html" title="Issue contents"> <img alt="" class="art_icon" style="top: 4px; left: 0px;" title="Issue contents" id="art_leftbox_yr5136_vertical_contents" src="/logos/buttonlogos/issue.png"/> </a> </div> <div style="opacity: 0;" class="popup"> <span class="popuphd"><a href="/j/issues/2024/05/00/index.html" title="Issue contents">Issue contents</a></span> <img class="but_close" src="/logos/buttonlogos/cross.png" /> </div> </div> <!-- AF: yr5136 pdf --> <div class="bubbleInfo"> <div class="sidebutton"> <a href="/j/issues/2024/05/00/yr5136/yr5136.pdf" title="PDF"> <img alt="" class="art_icon" style="top: 40px; left: 0px;" title="Download PDF of article" id="art_leftbox_yr5136_vertical_pdf" src="/logos/buttonlogos/pdf.png"/> </a> </div> <div style="opacity: 0;" class="popup"> <span class="popuphd"><a href="/j/issues/2024/05/00/yr5136/yr5136.pdf" title="PDF">Download PDF of article</a></span> <img class="but_close" src="/logos/buttonlogos/cross.png" /> </div> </div> <!-- AF: yr5136 navigation --> <div class="bubbleInfo"> <div class="sidebutton"> <a href="" title="Navigation"> <img alt="" class="art_icon" style="top: 76px; left: 0px;" title="Navigation" id="art_leftbox_yr5136_vertical_tocs" src="/logos/buttonlogos/navigate.png"/> </a> </div> <div style="opacity: 0;" class="popup"> <span class="popuphd">Navigation</span> <img class="but_close" src="/logos/buttonlogos/cross.png" /> <br/><ul> <li><a href="#SEC1">1. Introduction</a></li> <li><a href="#SEC2">2. Framework design</a></li> <li><a href="#SEC3">3. The administrative site</a></li> <li><a href="#SEC4">4. Database structure</a></li> <li><a href="#SEC5">5. Public site</a></li> <li><a href="#SEC6">6. A proof of concept: the B-IncStrDB</a></li> <li><a href="#SEC7">7. Conclusions</a></li> <li><a href="#SEC8">8. Future work</a></li> <li><a href="#References">References</a></li> </ul> </div> </div> <!-- AF: yr5136 highlightwords --> <div class="bubbleInfo"> <div class="sidebutton"> <a href="/services/help/highlight.html" title="highlighting"> <img alt="" class="art_icon" style="top: 112px; left: 0px;" title="highlighting" id="art_leftbox_yr5136_vertical_highlight" src="/logos/buttonlogos/settings.png"/> </a> </div> <div style="opacity: 0;" class="popup"> <span class="popuphd">Highlighting</span> <img class="but_close" src="/logos/buttonlogos/cross.png" /> <br/> <span style="display: inline;" class="optionbuttons"> Dictionary of Crystallography <a class="ref_lookup_button_yellow" href="#" title="Dictionary of Crystallography"> <img class="yellowimg" src="/logos/buttonlogos/unchecked.png" border="0" alt="reference" /> </a><br/> IUPAC Gold Book <a class="ref_lookup_button_orange" href="#" title="IUPAC Gold Book"> <img class="orangeimg" src="/logos/buttonlogos/unchecked.png" border="0" alt="reference" /> </a> </span><br/> <span class="hidemore"><a href="/services/help/highlight.html">more ...</a></span> </div> </div> <!-- AF: yr5136 downloadcitation --> <div class="bubbleInfo"> <div class="sidebutton"> <a href="https://scripts.iucr.org/cgi-bin/biblio_page?yr5136" title="Download citation"> <img alt="" class="art_icon" style="top: 148px; left: 0px;" title="Download citation" id="art_leftbox_yr5136_vertical_citation" src="/logos/buttonlogos/citation.png"/> </a> </div> <div style="opacity: 0;" class="popup"> <span class="popuphd">Download citation</span> <img class="but_close" src="/logos/buttonlogos/cross.png" /> <form action="//scripts.iucr.org/cgi-bin/biblio" method="post"><table class="citation"><tbody><tr><td align="right">Format<input name="cnor" value="yr5136" type="hidden"/></td><td align="right"><input name="saveas" value="BIBTeX" checked="checked" type="radio"/></td><td align="left">BIBTeX</td></tr><tr><td></td><td align="right"><input name="saveas" value="EndNote" type="radio"/></td><td align="left">EndNote</td></tr><tr><td></td><td align="right"><input name="saveas" value="RefMan" type="radio"/></td><td align="left">RefMan</td></tr><tr><td></td><td align="right"><input name="saveas" value="Refer" type="radio"/></td><td align="left">Refer</td></tr><tr><td></td><td align="right"><input name="saveas" value="Medline" type="radio"/></td><td align="left">Medline</td></tr><tr><td></td><td align="right"><input name="saveas" value="CIF" type="radio"/></td><td align="left">CIF</td></tr><tr><td></td><td align="right"><input name="saveas" value="SGML" type="radio"/></td><td align="left">SGML</td></tr><tr><td></td><td align="right"><input name="saveas" value="plaintext" type="radio"/></td><td align="left">Plain Text</td></tr><tr><td></td><td align="right"><input name="saveas" type="radio" value="text"/></td><td align="left">Text</td></tr><tr><td colspan="3" align="center"><input class="downloadbutton" name="Action" type="submit" value="download" /></td></tr></tbody></table></form> </div> </div> <!-- AF: yr5136 pageviews --> <div class="bubbleInfo"> <div class="sidebutton"> <a href="https://scripts.iucr.org/cgi-bin/citedin?yr5136" title="Statistics"> <img id="yr5136_divwide" alt="" class="art_icon downloads" style="top: 184px; left: 0px;" title="Statistics" src="/logos/buttonlogos/pageviews.png"/> </a> </div> <div style="opacity: 0;" class="popup"> <img class="but_close" src="/logos/buttonlogos/cross.png" /> <div class="" id="yr5136_stats"><span class="popuphd"><a title="Statistics" href="https://scripts.iucr.org/cgi-bin/citedin?yr5136">Article statistics</a></span></div> </div> </div> <!-- AF: yr5136 addthis --> <div class="bubbleInfo"> <div class="sidebutton"> <a id="cr" class="addthis_button_compact" href="#" addthis:description="" addthis:title="Towards dynamically configured databases for CIFs: the new modulated structures open database at the Bilbao Crystallographic Server" addthis:url="https://doi.org/10.1107/S1600576724007908"> <img class="art_icon" src="/logos/buttonlogos/addthis.png" alt="share" style="top: 220px; left: 0px;" onclick="$('#pr').css('display','none')" /> </a> </div> <div id="pr" class="popup" style="opacity: 0;"> <span class="popuphd" onclick="$(this).parent().css('display','none');$('#cr').trigger('click');return false;"><a onclick="return false;" href="">Share</a></span><img class="but_close" alt="close" src="/logos/buttonlogos/cross.png" /> </div> </div> <!-- AF: yr5136 previousarticle --> <div class="bubbleInfo"> <div class="sidebutton"> <a href="/j/issues/2024/05/00/dv5017/" title="Previous article"> <img alt="" class="art_icon" style="top: 256px; left: 0px;" title="Previous article" id="art_leftbox_yr5136_vertical_previousarticle" src="/logos/buttonlogos/previous_art.png"/> </a> </div> <div style="opacity: 0;" class="popup"> <span class="popuphd"><a href="/j/issues/2024/05/00/dv5017/" title="Previous article">Previous article</a></span> <img class="but_close" src="/logos/buttonlogos/cross.png" /> </div> </div> <!-- AF: yr5136 nextarticle --> <div class="bubbleInfo"> <div class="sidebutton"> <a href="/j/issues/2024/05/00/tu5056/" title="Next article"> <img alt="" class="art_icon" style="top: 292px; left: 0px;" title="Next article" id="art_leftbox_yr5136_vertical_nextarticle" src="/logos/buttonlogos/next_art.png"/> </a> </div> <div style="opacity: 0;" class="popup"> <span class="popuphd"><a href="/j/issues/2024/05/00/tu5056/" title="Next article">Next article</a></span> <img class="but_close" src="/logos/buttonlogos/cross.png" /> </div> </div> </div><!-- end div article_functions af_vertical --> </div><!-- end div art_leftbox --> <div id="art_leftbox_narrow"> <div class="article_functions af_horizontal"> <!-- AF: yr5136 previousarticle --> <div class="bubbleInfo"> <div class="sidebutton"> <a href="/j/issues/2024/05/00/dv5017/" title="Previous article"> <img alt="" class="art_icon" style="top: 12px; left: 0px; width: 20px;" title="Previous article" id="art_leftbox_narrow_yr5136_horizontal_previousarticle" src="/logos/buttonlogos/previous_art.png"/> </a> </div> <div style="opacity: 0;" class="popup"> <span class="popuphd"><a href="/j/issues/2024/05/00/dv5017/" title="Previous article">Previous article</a></span> <img class="but_close" src="/logos/buttonlogos/cross.png" /> </div> </div> <!-- AF: yr5136 issuecontents --> <div class="bubbleInfo"> <div class="sidebutton"> <a href="/j/issues/2024/05/00/index.html" title="Issue contents"> <img alt="" class="art_icon" style="top: 12px; left: 23px; width: 20px;" title="Issue contents" id="art_leftbox_narrow_yr5136_horizontal_contents" src="/logos/buttonlogos/issue.png"/> </a> </div> <div style="opacity: 0;" class="popup"> <span class="popuphd"><a href="/j/issues/2024/05/00/index.html" title="Issue contents">Issue contents</a></span> <img class="but_close" src="/logos/buttonlogos/cross.png" /> </div> </div> <!-- AF: yr5136 pdf --> <div class="bubbleInfo"> <div class="sidebutton"> <a href="/j/issues/2024/05/00/yr5136/yr5136.pdf" title="PDF"> <img alt="" class="art_icon" style="top: 12px; left: 46px; width: 20px;" title="Download PDF of article" id="art_leftbox_narrow_yr5136_horizontal_pdf" src="/logos/buttonlogos/pdf.png"/> </a> </div> <div style="opacity: 0;" class="popup"> <span class="popuphd"><a href="/j/issues/2024/05/00/yr5136/yr5136.pdf" title="PDF">Download PDF of article</a></span> <img class="but_close" src="/logos/buttonlogos/cross.png" /> </div> </div> <!-- AF: yr5136 navigation --> <div class="bubbleInfo"> <div class="sidebutton"> <a href="" title="Navigation"> <img alt="" class="art_icon" style="top: 12px; left: 69px; width: 20px;" title="Navigation" id="art_leftbox_narrow_yr5136_horizontal_tocs" src="/logos/buttonlogos/navigate.png"/> </a> </div> <div style="opacity: 0;" class="popup"> <span class="popuphd">Navigation</span> <img class="but_close" src="/logos/buttonlogos/cross.png" /> <br/><ul> <li><a href="#SEC1">1. Introduction</a></li> <li><a href="#SEC2">2. Framework design</a></li> <li><a href="#SEC3">3. The administrative site</a></li> <li><a href="#SEC4">4. Database structure</a></li> <li><a href="#SEC5">5. Public site</a></li> <li><a href="#SEC6">6. A proof of concept: the B-IncStrDB</a></li> <li><a href="#SEC7">7. Conclusions</a></li> <li><a href="#SEC8">8. Future work</a></li> <li><a href="#References">References</a></li> </ul> </div> </div> <!-- AF: yr5136 highlightwords --> <div class="bubbleInfo"> <div class="sidebutton"> <a href="/services/help/highlight.html" title="highlighting"> <img alt="" class="art_icon" style="top: 12px; left: 92px; width: 20px;" title="highlighting" id="art_leftbox_narrow_yr5136_horizontal_highlight" src="/logos/buttonlogos/settings.png"/> </a> </div> <div style="opacity: 0;" class="popup"> <span class="popuphd">Highlighting</span> <img class="but_close" src="/logos/buttonlogos/cross.png" /> <br/> <span style="display: inline;" class="optionbuttons"> Dictionary of Crystallography <a class="ref_lookup_button_yellow" href="#" title="Dictionary of Crystallography"> <img class="yellowimg" src="/logos/buttonlogos/unchecked.png" border="0" alt="reference" /> </a><br/> IUPAC Gold Book <a class="ref_lookup_button_orange" href="#" title="IUPAC Gold Book"> <img class="orangeimg" src="/logos/buttonlogos/unchecked.png" border="0" alt="reference" /> </a> </span><br/> <span class="hidemore"><a href="/services/help/highlight.html">more ...</a></span> </div> </div> <!-- AF: yr5136 downloadcitation --> <div class="bubbleInfo"> <div class="sidebutton"> <a href="https://scripts.iucr.org/cgi-bin/biblio_page?yr5136" title="Download citation"> <img alt="" class="art_icon" style="top: 12px; left: 115px; width: 20px;" title="Download citation" id="art_leftbox_narrow_yr5136_horizontal_citation" src="/logos/buttonlogos/citation.png"/> </a> </div> <div style="opacity: 0;" class="popup"> <span class="popuphd">Download citation</span> <img class="but_close" src="/logos/buttonlogos/cross.png" /> <form action="//scripts.iucr.org/cgi-bin/biblio" method="post"><table class="citation"><tbody><tr><td align="right">Format<input name="cnor" value="yr5136" type="hidden"/></td><td align="right"><input name="saveas" value="BIBTeX" checked="checked" type="radio"/></td><td align="left">BIBTeX</td></tr><tr><td></td><td align="right"><input name="saveas" value="EndNote" type="radio"/></td><td align="left">EndNote</td></tr><tr><td></td><td align="right"><input name="saveas" value="RefMan" type="radio"/></td><td align="left">RefMan</td></tr><tr><td></td><td align="right"><input name="saveas" value="Refer" type="radio"/></td><td align="left">Refer</td></tr><tr><td></td><td align="right"><input name="saveas" value="Medline" type="radio"/></td><td align="left">Medline</td></tr><tr><td></td><td align="right"><input name="saveas" value="CIF" type="radio"/></td><td align="left">CIF</td></tr><tr><td></td><td align="right"><input name="saveas" value="SGML" type="radio"/></td><td align="left">SGML</td></tr><tr><td></td><td align="right"><input name="saveas" value="plaintext" type="radio"/></td><td align="left">Plain Text</td></tr><tr><td></td><td align="right"><input name="saveas" type="radio" value="text"/></td><td align="left">Text</td></tr><tr><td colspan="3" align="center"><input class="downloadbutton" name="Action" type="submit" value="download" /></td></tr></tbody></table></form> </div> </div> <!-- AF: yr5136 pageviews --> <div class="bubbleInfo"> <div class="sidebutton"> <a href="https://scripts.iucr.org/cgi-bin/citedin?yr5136" title="Statistics"> <img id="yr5136_divnrw" alt="" class="art_icon downloads" style="top: 12px; left: 138px; width: 20px;" title="Statistics" src="/logos/buttonlogos/pageviews.png"/> </a> </div> <div style="opacity: 0;" class="popup"> <img class="but_close" src="/logos/buttonlogos/cross.png" /> <div class="" id="yr5136_stnar"><span class="popuphd"><a title="Statistics" href="https://scripts.iucr.org/cgi-bin/citedin?yr5136">Article statistics</a></span></div> </div> </div> <!-- AF: yr5136 addthis --> <div class="bubbleInfo"> <div class="sidebutton"> <a id="cl" class="addthis_button_compact" href="#" addthis:description="" addthis:title="Towards dynamically configured databases for CIFs: the new modulated structures open database at the Bilbao Crystallographic Server" addthis:url="https://doi.org/10.1107/S1600576724007908"> <img class="art_icon" src="/logos/buttonlogos/addthis.png" alt="share" style="top: 12px; left: 161px; width: 20px;" onclick="$('#pl').css('display','none')" /> </a> </div> <div id="pl" class="popup" style="opacity: 0;"> <span class="popuphd" onclick="$(this).parent().css('display','none');$('#cl').trigger('click');return false;"><a onclick="return false;" href="">Share</a></span><img class="but_close" alt="close" src="/logos/buttonlogos/cross.png" /> </div> </div> <!-- AF: yr5136 nextarticle --> <div class="bubbleInfo"> <div class="sidebutton"> <a href="/j/issues/2024/05/00/tu5056/" title="Next article"> <img alt="" class="art_icon" style="top: 12px; left: 184px; width: 20px;" title="Next article" id="art_leftbox_narrow_yr5136_horizontal_nextarticle" src="/logos/buttonlogos/next_art.png"/> </a> </div> <div style="opacity: 0;" class="popup"> <span class="popuphd"><a href="/j/issues/2024/05/00/tu5056/" title="Next article">Next article</a></span> <img class="but_close" src="/logos/buttonlogos/cross.png" /> </div> </div> </div><!-- end div article_functions af_horizontal --> </div><!-- end div art_leftbox_narrow --> <div class="clear"></div> <div id="iucr-art"><div id="fm"> <h2 class="mainheading"><a id="top">CIF applications</a><span style="display:none">\(\def\hfill{\hskip 5em}\def\hfil{\hskip 3em}\def\eqno#1{\hfil {#1}}\)</span></h2><div class="jinfo_header jinfo_header_article"> <div class="jh_catchline"> <div class="jh_left"> <div class="jicon_j"><table class="layout" style=""><tr><td><a href="/j"><img alt="Journal logo" class="jicon" src="//journals.iucr.org/logos/jicons/j_96x112.png" /></a></td><td><span class="jicon_logotitle">JOURNAL OF<br/>APPLIED<br/>CRYSTALLOGRAPHY</span></td></tr></table></div><!-- end div jicon_ --> <div class="clear"></div> <div class="jh_issn">ISSN: 1600-5767</div><!-- end div jh_issn --><div class="clear"></div> </div> <div class="jh_right"> <div class="jh_issueinfo"><span class="jh_volume" style=""><a style="" href="/j/services/archive.html"><span style="">Volume 57</span></a></span><span class="jh_biblspace" style="">|</span> <span class="jh_part"><a href="../index.html">Part 5</a></span><span class="jh_biblspace" style="">|</span> <span class="jh_monthandyear"><a href="../index.html"><span style="">October 2024</span></a></span><span class="jh_biblspace" style="">|</span> <span class="jh_pages">Pages 1640-1649</span><br /></div><!-- end div jh_issueinfo --><div class="clear"></div> <div class="jh_doi"> <span class="doi_catchline"><a href="https://doi.org/10.1107/S1600576724007908">https://doi.org/10.1107/S1600576724007908</a></span> </div><div class="clear"></div> <div class="jh_openaccesslogo" style="float: right;"><div class="openaccesslogo"><div class="oalogotext" style="" title="This is an open-access article distributed under the terms of the Creative Commons Attribution Licence, which permits unrestricted use, distribution, and reproduction in any medium, provided the original authors and source are cited.">Open <img alt="Open Access" class="oalogo" src="/logos/open.png" /> access</div></div> </div> <div class="clear"></div> </div><div class="clear"></div> </div><!-- end div jh_catchline --> </div><div id="right_hand_title_box"> <div id="atl"> <h2>Towards dynamically configured databases for CIFs: the new modulated structures open database at the Bilbao Crystallographic Server</h2> </div> <!-- Start Crossmark 2.0 widget --> <div style="float: right; text-align: right; width: 100px;"> <script src="https://crossmark-cdn.crossref.org/widget/v2.0/widget.js"></script> <a data-target="crossmark"><img alt="crossmark logo" src="https://crossmark-cdn.crossref.org/widget/v2.0/logos/CROSSMARK_Color_square_no_text.svg" width="60" /></a> </div> <!-- End Crossmark 2.0 widget --> <div id="aug"> <div class="au"> <b> <a href="https://scripts.iucr.org/cgi-bin/citedin?search_on=name&author_name=Gabirondo%2DL%26oacute%3Bpez%2C%20J%2E"><span class="au">J. Gabirondo-López</span></a>,<a href="#oida"><sup>a</sup></a><a href="#cor"><sup>*</sup></a> <a href="https://scripts.iucr.org/cgi-bin/citedin?search_on=name&author_name=Gabirondo%2DL%26oacute%3Bpez%2C%20I%2E"><span class="au">I. Gabirondo-López</span></a>,<a href="#oida"><sup>a</sup></a> <a href="https://scripts.iucr.org/cgi-bin/citedin?search_on=name&author_name=Tasci%2C%20E%2ES%2E"><span class="au">E. S. Tasci</span></a><a href="#oidb"><sup>b</sup></a> and <a href="https://scripts.iucr.org/cgi-bin/citedin?search_on=name&author_name=Madariaga%2C%20G%2E"><span class="au">G. Madariaga</span></a><a href="#oida"><sup>a</sup></a></b> </div> <div id="aff"> <p><span class="font_size_2"><a id="oida"><sup><b>a</b></sup></a>Department of Physics, University of the Basque Country UPV/EHU, Apartado 644, 48080 Bilbao, Spain, and <a id="oidb"><sup><b>b</b></sup></a>Department of Physics Engineering, Hacettepe University, Ankara 06800, Türkiye<br /><a id="cor"></a><sup>*</sup>Correspondence e-mail: <a href="mailto:jon.gabirondol%40ehu.eus">jon.gabirondol@ehu.eus</a></span></p> </div> </div> <div id="editdetails"><span class="editor">Edited by A. Barty, DESY, Hamburg, Germany</span> (<span class="ed_rec">Received 17 May 2024;</span> <span class="ed_acc">accepted 12 August 2024;</span> <span class="ed_web">online 17 September 2024</span>)</div> <div id="abs"> <p>This article presents a web-based framework to build a database without in-depth programming knowledge given a set of <a target='Navigator' class="ref_lookup_yellow hideyellow" href='https://dictionary.iucr.org/CIF' onclick="return makeSubWindow("https://dictionary.iucr.org/CIF", 'Navigator')">CIF</a> dictionaries and a collection of CIFs. The framework consists of two main elements: the public site that displays the information contained in the CIFs in an ordered manner, and the restricted administrative site which defines how that information is stored, processed and, eventually, displayed. Thus, the web application allows users to easily explore, filter and access the data, download the original CIFs, and visualize the structures via <span class="it"><i>JSmol</i></span>. The modulated structures open database B-IncStrDB, the official International Union of Crystallography repository for this type of material and available through the Bilbao Crystallographic Server, has been re-implemented following the proposed framework.</p> </div> <div id="kwdg"> <p><span class="kwdg_head">Keywords: </span> <a href="https://scripts.iucr.org/cgi-bin/full_search?words=Modulated%20Structures%20Open%20Database&Action=Search">Modulated Structures Open Database</a>; <a href="https://scripts.iucr.org/cgi-bin/full_search?words=CIF%20validation&Action=Search">CIF validation</a>; <a href="https://scripts.iucr.org/cgi-bin/full_search?words=Python%20web%20development&Action=Search">Python web development</a>; <a href="https://scripts.iucr.org/cgi-bin/full_search?words=Bilbao%20Crystallographic%20Server&Action=Search">Bilbao Crystallographic Server</a>.</p></div> <div class="art_codelinks"> </div> <div class="ica_readmore"> <a href="https://scripts.iucr.org/cgi-bin/similar?wordList=MODULATED%20STRUCTURES%20OPEN%20DATABASE%20or%20CIF%20VALIDATION%20or%20PYTHON%20WEB%20DEVELOPMENT%20or%20BILBAO%20CRYSTALLOGRAPHIC%20SERVER&from=yr5136">Similar articles</a></div> <script type="text/javascript" src="//api.growkudos.com/widgets/article/10.1107/S1600576724007908"></script> </div> </div> <div id="body"> <div id="DIVSEC1" class="sec1"> <h3><a id="SEC1"></a>1. Introduction</h3> <p>The introduction in the early 1990s of crystallographic information files (CIFs) (Hall <span class="it"><i>et al.</i></span>, 1991<a id="sourceBB19"></a><a href="#BB19"><img class="linkarrow img_align_bottom img_border_0" src="../../../../../../logos/arrows/j_arr.gif" width="17" height="16" alt="[Hall, S. R., Allen, F. H. & Brown, I. D. (1991). Acta Cryst. A47, 655-685.]" title="Hall, S. R., Allen, F. H. & Brown, I. D. (1991). Acta Cryst. A47, 655-685." /></a>), consolidating earlier ideas (Brown, 1983<a id="sourceBB8"></a><a href="#BB8"><img class="linkarrow img_align_bottom img_border_0" src="../../../../../../logos/arrows/j_arr.gif" width="17" height="16" alt="[Brown, I. D. (1983). Acta Cryst. A39, 216-224.]" title="Brown, I. D. (1983). Acta Cryst. A39, 216-224." /></a>; Crennell & Brown, 1985<a id="sourceBB10"></a><a href="#BB10"><img class="linkarrow img_align_bottom img_border_0" src="../../../../../../logos/arrows/j_arr.gif" width="17" height="16" alt="[Crennell, K. M. & Brown, I. D. (1985). J. Mol. Graph. 3, 40-49.]" title="Crennell, K. M. & Brown, I. D. (1985). J. Mol. Graph. 3, 40-49." /></a>) to standardize the transmission, validation and archiving of crystallographic data, started a new age in the field of structural crystallography. Since then, the number of stored and openly accessible structures with a high degree of quality control has quickly increased. At present, the main goal of the <a target='Navigator' class="ref_lookup_yellow hideyellow" href='https://dictionary.iucr.org/CIF' onclick="return makeSubWindow("https://dictionary.iucr.org/CIF", 'Navigator')">CIF</a> is to constitute the <span class="it"><i>lingua franca</i></span> of all the agents involved in the production, storage and dissemination of (mostly) crystallographic information.</p><p>On the other hand, the hierarchy defined by the conceptual sequence (meta-metadata)–(metadata)–(data) expressed by a <a target='Navigator' class="ref_lookup_yellow hideyellow" href='https://dictionary.iucr.org/Dictionary_definition_language' onclick="return makeSubWindow("https://dictionary.iucr.org/Dictionary_definition_language", 'Navigator')">dictionary definition language</a> (DDL), <a target='Navigator' class="ref_lookup_yellow hideyellow" href='https://dictionary.iucr.org/CIF' onclick="return makeSubWindow("https://dictionary.iucr.org/CIF", 'Navigator')">CIF</a> dictionaries and the CIFs themselves (Hall & McMahon, 2006<a id="sourceBB23"></a><a href="#BB23"><img class="linkarrow img_align_bottom img_border_0" src="../../../../../../logos/arrows/j_arr.gif" width="17" height="16" alt="[Hall, S. R. & McMahon, B. (2006). Editors. International Tables for Crystallography, Vol. G, Definition and Exchange of Crystallographic Data. Chester: IUCr.]" title="Hall, S. R. & McMahon, B. (2006). Editors. International Tables for Crystallography, Vol. G, Definition and Exchange of Crystallographic Data. Chester: IUCr." /></a>) allows the extension from crystallography to other ontologies. The availability of a well defined <a target='Navigator' class="ref_lookup_yellow hideyellow" href='https://dictionary.iucr.org/CIF' onclick="return makeSubWindow("https://dictionary.iucr.org/CIF", 'Navigator')">CIF</a> dictionary language allows easy extension of <a target='Navigator' class="ref_lookup_yellow hideyellow" href='https://dictionary.iucr.org/CIF' onclick="return makeSubWindow("https://dictionary.iucr.org/CIF", 'Navigator')">CIF</a> ontologies to such disparate fields as molecular information (MIF) (Allen <span class="it"><i>et al.</i></span>, 1995<a id="sourceBB1"></a><a href="#BB1"><img class="linkarrow img_align_bottom img_border_0" src="../../../../../../logos/arrows/j_arr.gif" width="17" height="16" alt="[Allen, F. H., Barnard, J. M., Cook, A. P. F. & Hall, S. R. (1995). J. Chem. Inf. Comput. Sci. 35, 412-427. ]" title="Allen, F. H., Barnard, J. M., Cook, A. P. F. & Hall, S. R. (1995). J. Chem. Inf. Comput. Sci. 35, 412-427. " /></a>), raw diffraction images (imgCIF) (Bernstein & Hammersley, 2006<a id="sourceBB6"></a><a href="#BB6"><img class="linkarrow img_align_bottom img_border_0" src="../../../../../../logos/arrows/j_arr.gif" width="17" height="16" alt="[Bernstein, H. J. & Hammersley, A. P. (2006). International Tables for Crystallography, Vol. G, ch. 2.3, pp. 37-43. Chester: IUCr.]" title="Bernstein, H. J. & Hammersley, A. P. (2006). International Tables for Crystallography, Vol. G, ch. 2.3, pp. 37-43. Chester: IUCr." /></a>) and topology (TopoCIF) (Blatov <span class="it"><i>et al.</i></span>, 2021<a id="sourceBB7"></a><a href="#BB7"><img class="linkarrow img_align_bottom img_border_0" src="../../../../../../logos/arrows/j_arr.gif" width="17" height="16" alt="[Blatov, V. A., Hanson, R. M. & Proserpio, D. M. (2021). Topology CIF Dictionary, https://www.iucr.org/__data/iucr/cif/dictionaries/cif_topology_0.9.6.dic.pdf.]" title="Blatov, V. A., Hanson, R. M. & Proserpio, D. M. (2021). Topology CIF Dictionary, https://www.iucr.org/__data/iucr/cif/dictionaries/cif_topology_0.9.6.dic.pdf." /></a>), all of which can leverage the availability of dictionary-aware software tools.</p><p>From the beginning, the closeness of the structure of a <a target='Navigator' class="ref_lookup_yellow hideyellow" href='https://dictionary.iucr.org/CIF' onclick="return makeSubWindow("https://dictionary.iucr.org/CIF", 'Navigator')">CIF</a> to that of a relational database through the design and organization into categories of the different data names allowed us to think about efficient storage of the information they contained. CIFs were designed to be written, validated and read by programs (while still being human-readable as well). However, and this is a serious drawback, adhering to the standard has generally been a secondary activity of high cost relative to perceived benefit for software developers not directly involved in the validation or exploitation of the information contained in the <a target='Navigator' class="ref_lookup_yellow hideyellow" href='https://dictionary.iucr.org/CIF' onclick="return makeSubWindow("https://dictionary.iucr.org/CIF", 'Navigator')">CIF,</a> despite the tools that already exist to create and manage CIFs [Berman <span class="it"><i>et al.</i></span>, 2006<a id="sourceBB4"></a><a href="#BB4"><img class="linkarrow img_align_bottom img_border_0" src="../../../../../../logos/arrows/j_arr.gif" width="17" height="16" alt="[Berman, H., Bernstein, H., Ellis, P., Feng, Z., Hall, S., Hoyland, M., McMahon, B., Spadaccini, N., Strickland, P., Westbrook, J. & Yang, H. (2006). International Tables for Crystallography, Vol. G, ch. 5, pp. 481-568. Chester: IUCr]" title="Berman, H., Bernstein, H., Ellis, P., Feng, Z., Hall, S., Hoyland, M., McMahon, B., Spadaccini, N., Strickland, P., Westbrook, J. & Yang, H. (2006). International Tables for Crystallography, Vol. G, ch. 5, pp. 481-568. Chester: IUCr" /></a>; International Union of Crystallography (IUCr), since 1993, <a href="https://www.iucr.org/resources/cif/software">https://www.iucr.org/resources/cif/software</a>]. This has diminished the reliability of the data contained in the CIFs and contributed to the delay in the migration towards more versatile implementations such as the transition from DDL1 to DDLm dictionaries (Hall & Cook, 2006<a id="sourceBB18"></a><a href="#BB18"><img class="linkarrow img_align_bottom img_border_0" src="../../../../../../logos/arrows/j_arr.gif" width="17" height="16" alt="[Hall, S. R. & Cook, A. P. F. (2006). International Tables for Crystallography, Vol. G, ch. 2.5, pp. 53-60. Chester: IUCr.]" title="Hall, S. R. & Cook, A. P. F. (2006). International Tables for Crystallography, Vol. G, ch. 2.5, pp. 53-60. Chester: IUCr." /></a>; Spadaccini & Hall, 2012<a id="sourceBB36"></a><a href="#BB36"><img class="linkarrow img_align_bottom img_border_0" src="../../../../../../logos/arrows/j_arr.gif" width="17" height="16" alt="[Spadaccini, N. & Hall, S. R. (2012). J. Chem. Inf. Model. 52, 1907-1916.]" title="Spadaccini, N. & Hall, S. R. (2012). J. Chem. Inf. Model. 52, 1907-1916." /></a>). Consequently, and although fortunately the situation has stabilized over time, many of the existing CIFs are not yet strictly valid [see, for example, Vaitkus <span class="it"><i>et al.</i></span> (2021<a id="sourceBB41"></a><a href="#BB41"><img class="linkarrow img_align_bottom img_border_0" src="../../../../../../logos/arrows/j_arr.gif" width="17" height="16" alt="[Vaitkus, A., Merkys, A. & Gražulis, S. (2021). J. Appl. Cryst. 54, 661-672.]" title="Vaitkus, A., Merkys, A. & Gražulis, S. (2021). J. Appl. Cryst. 54, 661-672." /></a>)].</p><p>It then seems obvious, and more so if we focus on the scope of a database, that validation turns out to be the key process in the usefulness of a <a target='Navigator' class="ref_lookup_yellow hideyellow" href='https://dictionary.iucr.org/CIF' onclick="return makeSubWindow("https://dictionary.iucr.org/CIF", 'Navigator')">CIF</a> for the safeguarding and utility of the data. Said validation can be carried out at several levels: syntactic and data-name validation against a dictionary and data consistency including scientific criteria. Syntactic, semantic (data-name validation against a dictionary) and data consistency (for including scientific criteria) validations are performed by programs such as <span class="it"><i>VCIF</i></span> (McMahon, 1998<a id="sourceBB28"></a><a href="#BB28"><img class="linkarrow img_align_bottom img_border_0" src="../../../../../../logos/arrows/j_arr.gif" width="17" height="16" alt="[McMahon, B. (1998). VCIF: a Utility to Validate the Syntax of a Crystallographic Information File, https://www.iucr.org/iucr-top/cif/software/vcif/index.html.]" title="McMahon, B. (1998). VCIF: a Utility to Validate the Syntax of a Crystallographic Information File, https://www.iucr.org/iucr-top/cif/software/vcif/index.html." /></a>, 2006<span class="it"><i>b</i></span><a id="sourceBB30"></a><a href="#BB30"><img class="linkarrow img_align_bottom img_border_0" src="../../../../../../logos/arrows/j_arr.gif" width="17" height="16" alt="[McMahon, B. (2006b). International Tables for Crystallography, Vol. G, ch. 5.3, pp. 499-525. Chester: IUCr.]" title="McMahon, B. (2006b). International Tables for Crystallography, Vol. G, ch. 5.3, pp. 499-525. Chester: IUCr." /></a>) and <span class="it"><i>VCIF2</i></span> (Todorov & Bernstein, 2008<a id="sourceBB39"></a><a href="#BB39"><img class="linkarrow img_align_bottom img_border_0" src="../../../../../../logos/arrows/j_arr.gif" width="17" height="16" alt="[Todorov, G. & Bernstein, H. J. (2008). J. Appl. Cryst. 41, 808-810.]" title="Todorov, G. & Bernstein, H. J. (2008). J. Appl. Cryst. 41, 808-810." /></a>), <span class="it"><i>enCIFer</i></span> (Allen <span class="it"><i>et al.</i></span>, 2004<a id="sourceBB2"></a><a href="#BB2"><img class="linkarrow img_align_bottom img_border_0" src="../../../../../../logos/arrows/j_arr.gif" width="17" height="16" alt="[Allen, F. H., Johnson, O., Shields, G. P., Smith, B. R. & Towler, M. (2004). J. Appl. Cryst. 37, 335-338.]" title="Allen, F. H., Johnson, O., Shields, G. P., Smith, B. R. & Towler, M. (2004). J. Appl. Cryst. 37, 335-338." /></a>), <span class="it"><i>PyCIFRW</i></span> (Hester, 2006<a id="sourceBB21"></a><a href="#BB21"><img class="linkarrow img_align_bottom img_border_0" src="../../../../../../logos/arrows/j_arr.gif" width="17" height="16" alt="[Hester, J. R. (2006). J. Appl. Cryst. 39, 621-625.]" title="Hester, J. R. (2006). J. Appl. Cryst. 39, 621-625." /></a>), <span class="it"><i>publCIF</i></span> (Westrip, 2010<a id="sourceBB43"></a><a href="#BB43"><img class="linkarrow img_align_bottom img_border_0" src="../../../../../../logos/arrows/j_arr.gif" width="17" height="16" alt="[Westrip, S. P. (2010). J. Appl. Cryst. 43, 920-925.]" title="Westrip, S. P. (2010). J. Appl. Cryst. 43, 920-925." /></a>), <span class="it"><i>iotbx.cif</i></span> (Gildea <span class="it"><i>et al.</i></span>, 2011<a id="sourceBB15"></a><a href="#BB15"><img class="linkarrow img_align_bottom img_border_0" src="../../../../../../logos/arrows/j_arr.gif" width="17" height="16" alt="[Gildea, R. J., Bourhis, L. J., Dolomanov, O. V., Grosse-Kunstleve, R. W., Puschmann, H., Adams, P. D. & Howard, J. A. K. (2011). J. Appl. Cryst. 44, 1259-1263.]" title="Gildea, R. J., Bourhis, L. J., Dolomanov, O. V., Grosse-Kunstleve, R. W., Puschmann, H., Adams, P. D. & Howard, J. A. K. (2011). J. Appl. Cryst. 44, 1259-1263." /></a>) and, probably the most powerful parser, <span class="it"><i>COD::CIF::Parser</i></span> (Merkys <span class="it"><i>et al.</i></span>, 2016<a id="sourceBB31"></a><a href="#BB31"><img class="linkarrow img_align_bottom img_border_0" src="../../../../../../logos/arrows/j_arr.gif" width="17" height="16" alt="[Merkys, A., Vaitkus, A., Butkus, J., Okulič-Kazarinas, M., Kairys, V. & Gražulis, S. (2016). J. Appl. Cryst. 49, 292-301.]" title="Merkys, A., Vaitkus, A., Butkus, J., Okulič-Kazarinas, M., Kairys, V. & Gražulis, S. (2016). J. Appl. Cryst. 49, 292-301." /></a>; Vaitkus <span class="it"><i>et al.</i></span>, 2021<a href="#BB41"><img class="linkarrow img_align_bottom img_border_0" src="../../../../../../logos/arrows/j_arr.gif" width="17" height="16" alt="[Vaitkus, A., Merkys, A. & Gražulis, S. (2021). J. Appl. Cryst. 54, 661-672.]" title="Vaitkus, A., Merkys, A. & Gražulis, S. (2021). J. Appl. Cryst. 54, 661-672." /></a>). <span class="it"><i>PLATON</i></span> (Spek, 2003<a id="sourceBB37"></a><a href="#BB37"><img class="linkarrow img_align_bottom img_border_0" src="../../../../../../logos/arrows/j_arr.gif" width="17" height="16" alt="[Spek, A. L. (2003). J. Appl. Cryst. 36, 7-13.]" title="Spek, A. L. (2003). J. Appl. Cryst. 36, 7-13." /></a>) (or <span class="it"><i>checkCIF</i></span>; Spek, 2020<a id="sourceBB38"></a><a href="#BB38"><img class="linkarrow img_align_bottom img_border_0" src="../../../../../../logos/arrows/j_arr.gif" width="17" height="16" alt="[Spek, A. L. (2020). Acta Cryst. E76, 1-11.]" title="Spek, A. L. (2020). Acta Cryst. E76, 1-11." /></a>) is accepted, by publishers and authors, as the standard tool for the validation of the chemical and crystallographic consistency of single-crystal structural data of small molecules.</p><p>A raw validated <a target='Navigator' class="ref_lookup_yellow hideyellow" href='https://dictionary.iucr.org/CIF' onclick="return makeSubWindow("https://dictionary.iucr.org/CIF", 'Navigator')">CIF</a> is a single file consisting of several data blocks (one for each embedded structure) which contain hundreds or thousands of lines, not following a predefined order. In addition, the meaning of the tags or their physical interpretation is not embedded in the file itself. So, although CIFs are human readable in theory, in practice searching for specific data inside a <a target='Navigator' class="ref_lookup_yellow hideyellow" href='https://dictionary.iucr.org/CIF' onclick="return makeSubWindow("https://dictionary.iucr.org/CIF", 'Navigator')">CIF</a> can be a challenging task, particularly for users unfamiliar with, for example, structural crystallography. As the number of published articles is growing exponentially (Fire & Guestrin, 2019<a id="sourceBB12"></a><a href="#BB12"><img class="linkarrow img_align_bottom img_border_0" src="../../../../../../logos/arrows/j_arr.gif" width="17" height="16" alt="[Fire, M. & Guestrin, C. (2019). GigaScience, 8, giz053.]" title="Fire, M. & Guestrin, C. (2019). GigaScience, 8, giz053." /></a>), the only way to handle this huge amount of results and data is to sort them and make them programmatically accessible.</p><p>To be scientifically useful, databases recording crystal structures should be not simply collections of CIFs but powerful tools to facilitate data access and management, such as the Protein Data Bank (PDB; Bernstein <span class="it"><i>et al.</i></span>, 1977<a id="sourceBB5"></a><a href="#BB5"><img class="linkarrow img_align_bottom img_border_0" src="../../../../../../logos/arrows/j_arr.gif" width="17" height="16" alt="[Bernstein, F. C., Koetzle, T. F., Williams, G. J. B., Meyer, E. F. Jr, Brice, M. D., Rodgers, J. R., Kennard, O., Shimanouchi, T. & Tasumi, M. (1977). Eur. J. Biochem. 80, 319-324. . ]" title="Bernstein, F. C., Koetzle, T. F., Williams, G. J. B., Meyer, E. F. Jr, Brice, M. D., Rodgers, J. R., Kennard, O., Shimanouchi, T. & Tasumi, M. (1977). Eur. J. Biochem. 80, 319-324. . " /></a>), the Crystallography Open Database (COD; Gražulis <span class="it"><i>et al.</i></span>, 2009<a id="sourceBB16"></a><a href="#BB16"><img class="linkarrow img_align_bottom img_border_0" src="../../../../../../logos/arrows/j_arr.gif" width="17" height="16" alt="[Gražulis, S., Chateigner, D., Downs, R. T., Yokochi, A. F. T., Quirós, M., Lutterotti, L., Manakova, E., Butkus, J., Moeck, P. & Le Bail, A. (2009). J. Appl. Cryst. 42, 726-729.]" title="Gražulis, S., Chateigner, D., Downs, R. T., Yokochi, A. F. T., Quirós, M., Lutterotti, L., Manakova, E., Butkus, J., Moeck, P. & Le Bail, A. (2009). J. Appl. Cryst. 42, 726-729." /></a>), the collection of magnetic structures (MAGNDATA; Gallego <span class="it"><i>et al.</i></span>, 2016<span class="it"><i>a</i></span><a id="sourceBB13"></a><a href="#BB13"><img class="linkarrow img_align_bottom img_border_0" src="../../../../../../logos/arrows/j_arr.gif" width="17" height="16" alt="[Gallego, S. V., Perez-Mato, J. M., Elcoro, L., Tasci, E. S., Hanson, R. M., Aroyo, M. I. & Madariaga, G. (2016a). J. Appl. Cryst. 49, 1941-1956.]" title="Gallego, S. V., Perez-Mato, J. M., Elcoro, L., Tasci, E. S., Hanson, R. M., Aroyo, M. I. & Madariaga, G. (2016a). J. Appl. Cryst. 49, 1941-1956." /></a>,<span class="it"><i>b</i></span><a id="sourceBB14"></a><a href="#BB14"><img class="linkarrow img_align_bottom img_border_0" src="../../../../../../logos/arrows/j_arr.gif" width="17" height="16" alt="[Gallego, S. V., Perez-Mato, J. M., Elcoro, L., Tasci, E. S., Hanson, R. M., Momma, K., Aroyo, M. I. & Madariaga, G. (2016b). J. Appl. Cryst. 49, 1750-1776.]" title="Gallego, S. V., Perez-Mato, J. M., Elcoro, L., Tasci, E. S., Hanson, R. M., Momma, K., Aroyo, M. I. & Madariaga, G. (2016b). J. Appl. Cryst. 49, 1750-1776." /></a>) and many others listed on the website of the IUCr (since 2002, <a href="https://www.iucr.org/resources/data/databases">https://www.iucr.org/resources/data/databases</a>). Along with these excellent databases, there coexist less ambitious, but very useful, applications that use CIFs for the exchange of information. Their biggest weakness is usually the use of <span class="it"><i>ad</i></span> <span class="it"><i>hoc</i></span> hard-coded tags: since official dictionaries are revised and expanded over relatively long periods of time, some <a target='Navigator' class="ref_lookup_yellow hideyellow" href='https://dictionary.iucr.org/CIF' onclick="return makeSubWindow("https://dictionary.iucr.org/CIF", 'Navigator')">CIF</a> applications, especially in emerging fields, are built on top of semi-official dictionaries. The subsequent adaptation of these to the finally approved dictionaries may involve a debugging of unknown scope.</p><p>In this work, we present a dictionary-independent framework to organize <a target='Navigator' class="ref_lookup_yellow hideyellow" href='https://dictionary.iucr.org/CIF' onclick="return makeSubWindow("https://dictionary.iucr.org/CIF", 'Navigator')">CIF</a> information (although the acronym <a target='Navigator' class="ref_lookup_yellow hideyellow" href='https://dictionary.iucr.org/CIF' onclick="return makeSubWindow("https://dictionary.iucr.org/CIF", 'Navigator')">CIF</a> refers to the <a target='Navigator' class="ref_lookup_yellow hideyellow" href='https://dictionary.iucr.org/Crystallographic_Information_Framework' onclick="return makeSubWindow("https://dictionary.iucr.org/Crystallographic_Information_Framework", 'Navigator')">crystallographic information framework,</a> in what follows this term will be used as a reference to the syntax of a file, regardless of its content) in databases and make it available via web applications. The main idea is that most of the characteristics of the application (for example, how the stored CIFs are rendered) can be defined by relating them to the tags defined in a set of dictionaries. Thus, the tags are decoupled from the code, so all CIFs are treated equally, and the database can be modified by updating the dictionaries or the CIFs. This allows the maintenance of the database without hard-coding of domain-specific concepts, and it serves as a base database that can be used to store CIFs with different scopes, such as the aforementioned ontologies. Consequently, for this approach to work properly, the correctness of all CIFs contained in the database must be ensured and, therefore, the CIFs shown by the web application are intrinsically valid according to the selected dictionaries. To our knowledge, compared with other databases such as the ones mentioned above, the databases created using this framework have the advantages that they are easily customized, can be used to display the information related to various <a target='Navigator' class="ref_lookup_yellow hideyellow" href='https://dictionary.iucr.org/CIF' onclick="return makeSubWindow("https://dictionary.iucr.org/CIF", 'Navigator')">CIF</a> dictionaries directly and ensure that the CIFs are correct.</p><p>The main contributions of this work are the development of a neutral web-based framework, customizable without in-depth programming knowledge, that allows a database to be built with arbitrary information as long as it is supplied in <a target='Navigator' class="ref_lookup_yellow hideyellow" href='https://dictionary.iucr.org/CIF' onclick="return makeSubWindow("https://dictionary.iucr.org/CIF", 'Navigator')">CIF</a> format and there exist dictionaries for its validation. The implementation of this approach, together with its application to the database of modulated structures (B-IncStrDB) included in the Bilbao Crystallographic Server (Aroyo <span class="it"><i>et al.</i></span>, 2006<a id="sourceBB3"></a><a href="#BB3"><img class="linkarrow img_align_bottom img_border_0" src="../../../../../../logos/arrows/j_arr.gif" width="17" height="16" alt="[Aroyo, M. I., Perez-Mato, J. M., Capillas, C., Kroumova, E., Ivantchev, S., Madariaga, G., Kirov, A. & Wondratschek, H. (2006). Z. Kristallogr. Cryst. Mater. 221, 15-27.]" title="Aroyo, M. I., Perez-Mato, J. M., Capillas, C., Kroumova, E., Ivantchev, S., Madariaga, G., Kirov, A. & Wondratschek, H. (2006). Z. Kristallogr. Cryst. Mater. 221, 15-27." /></a>), is described in the following sections.</p></div> <div id="DIVSEC2" class="sec1"> <h3><a id="SEC2"></a>2. Framework design</h3> <p>The framework proposed in this work allows the creation of web applications to manage and explore databases that gather the information contained in CIFs. The main idea is to define a set of rules that will determine the way <a target='Navigator' class="ref_lookup_yellow hideyellow" href='https://dictionary.iucr.org/CIF' onclick="return makeSubWindow("https://dictionary.iucr.org/CIF", 'Navigator')">CIF</a> information is stored and, eventually, displayed. To do so, the most robust approach is to establish those rules according to the tags defined in a set of <a target='Navigator' class="ref_lookup_yellow hideyellow" href='https://dictionary.iucr.org/CIF' onclick="return makeSubWindow("https://dictionary.iucr.org/CIF", 'Navigator')">CIF</a> dictionaries; thus, all the CIFs that contain the tags defined in those dictionaries will be treated equally. As indicated above, this approach requires that all the CIFs suitable for storage in the database must be valid according to the set of <a target='Navigator' class="ref_lookup_yellow hideyellow" href='https://dictionary.iucr.org/CIF' onclick="return makeSubWindow("https://dictionary.iucr.org/CIF", 'Navigator')">CIF</a> dictionaries, and that all the tags of the files are defined as usable tags within the set of dictionaries. Once both conditions are fulfilled, the <a target='Navigator' class="ref_lookup_yellow hideyellow" href='https://dictionary.iucr.org/CIF' onclick="return makeSubWindow("https://dictionary.iucr.org/CIF", 'Navigator')">CIF</a> is stored, and the information represented in it can be displayed in an appropriate manner.</p><p>Such a framework must have two main elements: a database that contains not only the <a target='Navigator' class="ref_lookup_yellow hideyellow" href='https://dictionary.iucr.org/CIF' onclick="return makeSubWindow("https://dictionary.iucr.org/CIF", 'Navigator')">CIF</a> information but also all the information required to display it properly, and a web application, to process all the data contained in the CIFs and to render them in a human-readable way. Consequently, one key element of the web application is <a target='Navigator' class="ref_lookup_yellow hideyellow" href='https://dictionary.iucr.org/CIF' onclick="return makeSubWindow("https://dictionary.iucr.org/CIF", 'Navigator')">CIF</a> validation: to simplify the design of the database application and to ensure both performance and data integrity, it is essential that all ingested data (including CIFs and dictionaries) follow the standards defined by the dictionaries loaded in the application.</p><p>To obtain a flexible and easy-to-configure application, the web implementation is divided into two main sites. On the one hand, there is a private administrative site, which is used to manage the information stored in the database, to ensure its correctness and to specify how it is displayed. On the other hand, there is a public site, which renders the information contained in the CIFs of the database. That rendering is done according to the configuration set in the administrative site. The main setup of the web application starts by uploading a set of <a target='Navigator' class="ref_lookup_yellow hideyellow" href='https://dictionary.iucr.org/CIF' onclick="return makeSubWindow("https://dictionary.iucr.org/CIF", 'Navigator')">CIF</a> dictionaries to the administrative site. Once syntactically validated against the <a target='Navigator' class="ref_lookup_yellow hideyellow" href='https://dictionary.iucr.org/DDL' onclick="return makeSubWindow("https://dictionary.iucr.org/DDL", 'Navigator')">DDL</a> on which the dictionary has been built, the tags defined in those dictionaries are stored in the database. Then, those tags that define the meaning, the properties and the category structure of the items included in a <a target='Navigator' class="ref_lookup_yellow hideyellow" href='https://dictionary.iucr.org/CIF' onclick="return makeSubWindow("https://dictionary.iucr.org/CIF", 'Navigator')">CIF</a> can later be used to specify how the CIFs will be stored and rendered. When a <a target='Navigator' class="ref_lookup_yellow hideyellow" href='https://dictionary.iucr.org/CIF' onclick="return makeSubWindow("https://dictionary.iucr.org/CIF", 'Navigator')">CIF</a> is uploaded, it is validated against the set of dictionaries uploaded to the web application, and it is rendered in the public site according to the specifications established in the administrative site.</p><p>Each of those sites is divided into two main parts: the backend, which consists of the actual programs that process the requests made by the users and communicates with the database; and the frontend, which contains all the interfaces needed for user interaction. As will be shown in Section 3<a href="#SEC3"><img class="linkarrow img_align_bottom img_border_0" src="../../../../../../logos/arrows/j_arr.gif" width="17" height="16" alt="[link]" /></a>, the backend is one of the core elements of the framework. It implements all the data processing (including the reading and validation of the <a target='Navigator' class="ref_lookup_yellow hideyellow" href='https://dictionary.iucr.org/CIF' onclick="return makeSubWindow("https://dictionary.iucr.org/CIF", 'Navigator')">CIF</a> dictionaries and files) and the dynamic configuration of the web application. The frontend is responsible for displaying all the information given by the backend. Since it is the part of the framework that is in direct contact with the users, it allows high flexibility in terms of customization: regardless of the backend, the frontend can easily be modified to change the displayed data, the style of the interfaces or any other details needed by the developers. The overall design of the framework can be seen in Fig. 1<a href="#FIG1"><img class="linkarrow img_align_bottom img_border_0" src="../../../../../../logos/arrows/j_arr.gif" width="17" height="16" alt="[link]" /></a>: the administrators provide the dictionaries that will be used for validation, some custom rules for processing and displaying the information, and the CIFs to be stored. All this information is stored in the database, so that users can access it by using the public site.</p><div class="fig"> <table summary="[Figure 1]" cellpadding="5" class="fig" width="100%"> <tbody> <tr> <td class="td_align_center width_20"> <a href="yr5136fig1.html"><img width="100" height="35" src="yr5136fig1thm.gif" class="figlnkthm img_align_middle" alt="[Figure 1]" /> <br /></a> </td> <td> <span class="font_size_3"><b><a href="yr5136fig1.html" id="FIG1">Figure 1</a></b></span> <br /><span class="font_size_2 caption">Overall representation of the proposed framework. Administrators provide the CIF dictionaries that will be used for validation, the CIFs and the rules for displaying the information they contain. The backend validates the CIFs against the given dictionaries and stores the information in the database following the rules provided. Finally, users can access the information of the CIFs from the public site.</span></td> </tr> </tbody> </table> </div> <p>Accordingly, in the next sections (Sections 3<a href="#SEC3"><img class="linkarrow img_align_bottom img_border_0" src="../../../../../../logos/arrows/j_arr.gif" width="17" height="16" alt="[link]" /></a> and 4<a href="#SEC4"><img class="linkarrow img_align_bottom img_border_0" src="../../../../../../logos/arrows/j_arr.gif" width="17" height="16" alt="[link]" /></a>), the administrative site will be explained first, as it contains some essential elements that are required to fully understand the structure of the database, while a general discussion of the public site will be presented in Section 5<a href="#SEC5"><img class="linkarrow img_align_bottom img_border_0" src="../../../../../../logos/arrows/j_arr.gif" width="17" height="16" alt="[link]" /></a>. Then, a possible frontend is shown in Section 6<a href="#SEC6"><img class="linkarrow img_align_bottom img_border_0" src="../../../../../../logos/arrows/j_arr.gif" width="17" height="16" alt="[link]" /></a>, which uses the B-IncStrDB as an example, as it is the first crystallographic database built using the proposed framework. Note that the proposed architecture could be implemented by using various platforms or languages, and that the exact tools used in that first application (see Section 6<a href="#SEC6"><img class="linkarrow img_align_bottom img_border_0" src="../../../../../../logos/arrows/j_arr.gif" width="17" height="16" alt="[link]" /></a>) are only one of the possible options.</p></div> <div id="DIVSEC3" class="sec1"> <h3><a id="SEC3"></a>3. The administrative site</h3> <p>The administrative site allows site managers to specify some parameters of the application related to the visualization of its entries and to the performance of the database. All customizable features can be easily edited and removed, allowing the database to be adapted to any visual requirement or modification in the dictionaries.</p><p>Regarding the configuration of the main layout of an entry, the information stored in a record is shown separately in sections. Those sections consist of a title, the position they occupy when rendered and a set of tag categories that are displayed within them. In this context, those categories are the category assignments of each data name in the <a target='Navigator' class="ref_lookup_yellow hideyellow" href='https://dictionary.iucr.org/DDL' onclick="return makeSubWindow("https://dictionary.iucr.org/DDL", 'Navigator')">DDL.</a> Administrators can choose in which order the categories are shown and give a physical meaning to that group by setting a title. Thus, the way in which the information is displayed can be modified to fit the scope of the database.</p><p>The web application and the data processing can be dynamically configured by managing the elements that are described in the following subsections.</p> <div id="DIVSEC3.1" class="sec2"> <h4><a id="SEC3.1"></a>3.1. Dictionaries</h4> <p>The set of dictionaries needed to validate the CIFs define all the tags that could be stored within the database. The specific tags feeding a certain database as well as how it is visually structured are governed by rules established at the administrator level (see Sections 3.3<a href="#SEC3.3"><img class="linkarrow img_align_bottom img_border_0" src="../../../../../../logos/arrows/j_arr.gif" width="17" height="16" alt="[link]" /></a> to 3.7<a href="#SEC3.7"><img class="linkarrow img_align_bottom img_border_0" src="../../../../../../logos/arrows/j_arr.gif" width="17" height="16" alt="[link]" /></a>). At present only DDL1 dictionaries are supported.</p><p>When a dictionary is uploaded to the database, the first step is to read the file and to check both its syntax and contents (the definitions of the data blocks). If the input dictionary presents any type of error, the upload process is halted and the dictionary will not be stored in the database. Once the correctness of the input dictionary is ensured, the metadata of the file (name of the dictionary, version, last time it was updated…) are retrieved and saved in the database. In the case that the uploaded dictionary is a different version of another dictionary, already in the database, the entry state of all the CIFs that were validated against it is updated, indicating that the CIFs need to be validated again. Finally, the new dictionary is merged with the other dictionaries of the database, so that future validations of CIFs will take into account the restrictions described in this merged file. In this case, that merging procedure is made following the STRICT method described by McMahon (2006<span class="it"><i>a</i></span><a id="sourceBB29"></a><a href="#BB29"><img class="linkarrow img_align_bottom img_border_0" src="../../../../../../logos/arrows/j_arr.gif" width="17" height="16" alt="[McMahon, B. (2006a). International Tables for Crystallography, Vol. G, ch. 3.1, pp. 88-89. Chester: IUCr.]" title="McMahon, B. (2006a). International Tables for Crystallography, Vol. G, ch. 3.1, pp. 88-89. Chester: IUCr." /></a>) – a fatal error is raised if a data name is multiply defined – but any other merging mode could be used.</p></div> <div id="DIVSEC3.2" class="sec2"> <h4><a id="SEC3.2"></a>3.2. CIFs</h4> <p>When a new <a target='Navigator' class="ref_lookup_yellow hideyellow" href='https://dictionary.iucr.org/CIF' onclick="return makeSubWindow("https://dictionary.iucr.org/CIF", 'Navigator')">CIF</a> is uploaded, it is validated against the set of dictionaries of the database. New entries are set as private by default, so they can only be seen by administrators. Each entry receives a unique identifier that can later be used to properly identify that entry. Once a new file is uploaded, its representative figure can be created or uploaded (see Section 6.2.1<a href="#SEC6.2.1"><img class="linkarrow img_align_bottom img_border_0" src="../../../../../../logos/arrows/j_arr.gif" width="17" height="16" alt="[link]" /></a>). All entries can be made public or private at any time, and their figures can also be updated. A deeper explanation of how a <a target='Navigator' class="ref_lookup_yellow hideyellow" href='https://dictionary.iucr.org/CIF' onclick="return makeSubWindow("https://dictionary.iucr.org/CIF", 'Navigator')">CIF</a> is rendered can be found in Section 5.2<a href="#SEC5.2"><img class="linkarrow img_align_bottom img_border_0" src="../../../../../../logos/arrows/j_arr.gif" width="17" height="16" alt="[link]" /></a>.</p><p>The process of uploading a <a target='Navigator' class="ref_lookup_yellow hideyellow" href='https://dictionary.iucr.org/CIF' onclick="return makeSubWindow("https://dictionary.iucr.org/CIF", 'Navigator')">CIF</a> to the database is very similar to that of the dictionaries. First of all, the <a target='Navigator' class="ref_lookup_yellow hideyellow" href='https://dictionary.iucr.org/CIF' onclick="return makeSubWindow("https://dictionary.iucr.org/CIF", 'Navigator')">CIF</a> is stored in a temporary file for easing the process of reading its contents. The second step is to validate the file against the merged dictionaries stored in the database. If the <a target='Navigator' class="ref_lookup_yellow hideyellow" href='https://dictionary.iucr.org/CIF' onclick="return makeSubWindow("https://dictionary.iucr.org/CIF", 'Navigator')">CIF</a> presents any kind of error or warning, it will not be possible to upload the file. This design decision has been taken in order to ensure that all the CIFs of the database have a minimum base of quality.</p><p>After having verified the correctness of the <a target='Navigator' class="ref_lookup_yellow hideyellow" href='https://dictionary.iucr.org/CIF' onclick="return makeSubWindow("https://dictionary.iucr.org/CIF", 'Navigator')">CIF,</a> the next step is to check that all the tags of the file to upload are inside the database. If a tag is not found, the uploading process will be halted and the administrator will be required to update the dictionaries stored in the database and/or upload additional ones. In addition, if the tag appears in the list of excluded tags, this will not be taken into account when performing the validation. With these restrictions, the application ensures that all the tags of the new CIFs are included in the dictionaries stored in the database.</p><p>Regarding the storage process of the <a target='Navigator' class="ref_lookup_yellow hideyellow" href='https://dictionary.iucr.org/CIF' onclick="return makeSubWindow("https://dictionary.iucr.org/CIF", 'Navigator')">CIF,</a> first some hard-coded metadata are generated and the tags with their respective values are retrieved. Those metadata are specific for each database: for instance, in the case of the B-IncStrDB, a unique identifier is created, and the values of the tags <span class="ty"><tt>_publ_section_title</tt></span>, <span class="ty"><tt>_publ_author_name</tt></span>, <span class="ty"><tt>_journal_name_full</tt></span>, <span class="ty"><tt>_journal_year</tt></span>, <span class="ty"><tt>_journal_</tt></span><span class="ty"><tt>volume</tt></span>, <span class="ty"><tt>_journal_page_first</tt></span> and <span class="ty"><tt>_journal_</tt></span><span class="ty"><tt>page_last</tt></span> are extracted from the <a target='Navigator' class="ref_lookup_yellow hideyellow" href='https://dictionary.iucr.org/CIF' onclick="return makeSubWindow("https://dictionary.iucr.org/CIF", 'Navigator')">CIF</a> and stored in the database. Afterwards, both the metadata and tags are stored in the database. By default, this process also creates a new state for the entry, showing that the entry is private and that it has no errors. Moreover, additional metadata concerning the dictionaries used for validating the <a target='Navigator' class="ref_lookup_yellow hideyellow" href='https://dictionary.iucr.org/CIF' onclick="return makeSubWindow("https://dictionary.iucr.org/CIF", 'Navigator')">CIF</a> are stored in the database. Lastly, the temporary file that is created at the beginning of the process is moved to the database's directory with an appropriate name, and the original <a target='Navigator' class="ref_lookup_yellow hideyellow" href='https://dictionary.iucr.org/CIF' onclick="return makeSubWindow("https://dictionary.iucr.org/CIF", 'Navigator')">CIF</a> is copied into a common directory for downloading if it is requested by the user. Given that all the curation operations of the database contents are done through CIFs, the correlation between the database contents and the stored CIFs is preserved. The revision histories of the entries are not recorded. Both the database records and the corresponding CIFs are superseded by any updated versions.</p></div> <div id="DIVSEC3.3" class="sec2"> <h4><a id="SEC3.3"></a>3.3. Excluded tags</h4> <p>Often, submitted CIFs include information that is outside the scope of the database. For example, <a target='Navigator' class="ref_lookup_yellow hideyellow" href='https://dictionary.iucr.org/CIF' onclick="return makeSubWindow("https://dictionary.iucr.org/CIF", 'Navigator')">CIF</a> generators may include data items with undefined values, data names that belong to dictionaries that are not loaded into the application or information that is not relevant to a first look at the data (for example, a list of reflections). To handle these cases, administrators can define a list of data names that should be ignored during the entry processing. The associated data will not be stored in the database or displayed by the interface. In the case of loops, the whole loop will be skipped if it contains a tag that must be ignored. Thus, it is not required to add all the tags of the loop, but it is sufficient to specify just one of them. It must be emphasized that, as the uploaded <a target='Navigator' class="ref_lookup_yellow hideyellow" href='https://dictionary.iucr.org/CIF' onclick="return makeSubWindow("https://dictionary.iucr.org/CIF", 'Navigator')">CIF</a> remains unchanged, this information is not deleted at all and can be accessed by downloading the original file. (Note that on many occasions the original <a target='Navigator' class="ref_lookup_yellow hideyellow" href='https://dictionary.iucr.org/CIF' onclick="return makeSubWindow("https://dictionary.iucr.org/CIF", 'Navigator')">CIF</a> requires some manual changes to comply with the standard.)</p></div> <div id="DIVSEC3.4" class="sec2"> <h4><a id="SEC3.4"></a>3.4. Section structure</h4> <p>The information contained in the CIFs is shown in a layout defined by the administrators. The tags corresponding to certain categories are joined into sections, which means that all the CIFs are displayed in a homogeneous manner that does not depend on the order of the original file. The administrators can create, eliminate and rename those sections, and they can also choose which tag categories are shown inside them.</p></div> <div id="DIVSEC3.5" class="sec2"> <h4><a id="SEC3.5"></a>3.5. Tag titles</h4> <p>In order to facilitate the reading of the information shown in the application, especially for inexperienced users, the values of the tags can be accompanied by a more informative title than the actual tag name. Those titles can be set from the administrative site.</p></div> <div id="DIVSEC3.6" class="sec2"> <h4><a id="SEC3.6"></a>3.6. Matrices</h4> <p>Some loops are better shown as matrices in order to enhance their readability. Administrators can specify which loops should be shown as matrices by introducing the common root of the tag of the elements of the loop, the dimensions of the matrix and the title that will be shown on the public site.</p><p>For instance, let us consider the case of the tags that are used to represent the cell parameters of each subsystem present in a composite. Those tags are defined in the msCIF dictionary (Madariaga, 2006<a id="sourceBB26"></a><a href="#BB26"><img class="linkarrow img_align_bottom img_border_0" src="../../../../../../logos/arrows/j_arr.gif" width="17" height="16" alt="[Madariaga, G. (2006). International Tables for Crystallography, Vol. G, ch. 4.3, pp. 270-289. Chester: IUCr.]" title="Madariaga, G. (2006). International Tables for Crystallography, Vol. G, ch. 4.3, pp. 270-289. Chester: IUCr." /></a>). For each subsystem the matrix <span class="it"><i>W</i></span> as defined by van Smaalen (1991<a id="sourceBB35"></a><a href="#BB35"><img class="linkarrow img_align_bottom img_border_0" src="../../../../../../logos/arrows/j_arr.gif" width="17" height="16" alt="[Smaalen, S. van (1991). Phys. Rev. B, 43, 11330-11341.]" title="Smaalen, S. van (1991). Phys. Rev. B, 43, 11330-11341." /></a>) is represented with a set of tags (whose default values are 0) like <span class="ty"><tt>_cell_subsystem_</tt></span><span class="ty"><tt>matrix_W_i_j</tt></span>, where <span class="ty"><tt>i</tt></span> and <span class="ty"><tt>j</tt></span> are integers from 1 to 11, which represent the indices of the element of the matrix. In that case the <span class="ty"><tt>_cell_subsystem_matrix_W_</tt></span> string is set as the base of the matrix, as it is the text that is common in all the tags of the elements of the matrix, and the maximum dimensions must be set to 11 and 11. Consequently, for all of the CIFs containing such a loop, it will be shown in its matrix form. A deeper explanation of how a matrix is rendered is given in Section 5.2<a href="#SEC5.2"><img class="linkarrow img_align_bottom img_border_0" src="../../../../../../logos/arrows/j_arr.gif" width="17" height="16" alt="[link]" /></a>. An example of such a case can be found in the <a target='Navigator' class="ref_lookup_yellow hideyellow" href='https://dictionary.iucr.org/CIF' onclick="return makeSubWindow("https://dictionary.iucr.org/CIF", 'Navigator')">CIF</a> deposited by Ren <span class="it"><i>et al.</i></span> (1996<a id="sourceBB34"></a><a href="#BB34"><img class="linkarrow img_align_bottom img_border_0" src="../../../../../../logos/arrows/j_arr.gif" width="17" height="16" alt="[Ren, Y., Baas, J., Meetsma, A., de Boer, J. L. & Wiegers, G. A. (1996). Acta Cryst. B52, 398-405.]" title="Ren, Y., Baas, J., Meetsma, A., de Boer, J. L. & Wiegers, G. A. (1996). Acta Cryst. B52, 398-405." /></a>):</p> <div class="scheme"><a id="SCHEME1"></a> <img src="yr5136scheme1.gif" alt="[Scheme 1]" /> </div> <p>In the public view, the matrices are rendered as shown in Fig. 2<a href="#FIG2"><img class="linkarrow img_align_bottom img_border_0" src="../../../../../../logos/arrows/j_arr.gif" width="17" height="16" alt="[link]" /></a>.</p><div class="fig"> <table summary="[Figure 2]" cellpadding="5" class="fig" width="100%"> <tbody> <tr> <td class="td_align_center width_20"> <a href="yr5136fig2.html"><img width="100" height="33" src="yr5136fig2thm.gif" class="figlnkthm img_align_middle" alt="[Figure 2]" /> <br /></a> </td> <td> <span class="font_size_3"><b><a href="yr5136fig2.html" id="FIG2">Figure 2</a></b></span> <br /><span class="font_size_2 caption">Matrix representation of the values present in the loop example given in the text. For convenience and unlike how they are presented in the database web interface, the matrices have been placed side by side.</span></td> </tr> </tbody> </table> </div> </div> <div id="DIVSEC3.7" class="sec2"> <h4><a id="SEC3.7"></a>3.7. Search fields</h4> <p>The search form of the public site is also fully customizable: the tags that will be used to perform the query can be selected through the administrative site. The operator corresponding to a tag is directly selected according to their type. String tags only accept `=' and `!=' operators (equal and not equal, but restricted implicitly to a search by substrings), whereas numerical tags accept `=', `!=', `<', `≤', `>' and `≥', so numerical comparisons can be made between the value of the tag and the input of the search form. Moreover, the selected tags can be shown accompanied by a suitable name instead of the raw tag name, and the order in which they appear can also be edited.</p></div> <div id="DIVSEC3.8" class="sec2"> <h4><a id="SEC3.8"></a>3.8. Users</h4> <p>The creation and removal of privileged users or modification of the metadata (first and last names, and the institution) of the existing ones can also be done through the administrative site. This allows dynamic modification of the users that can manage the website. In the future, a group-based organization scheme will be adopted to define the permissions of a set of users.</p></div> </div> <div id="DIVSEC4" class="sec1"> <h3><a id="SEC4"></a>4. Database structure</h3> <p>The structure of the database (see Fig. 3<a href="#FIG3"><img class="linkarrow img_align_bottom img_border_0" src="../../../../../../logos/arrows/j_arr.gif" width="17" height="16" alt="[link]" /></a>) reflects and favors the actions accessed from the administrative site. The tables of the database can be divided into three main groups: the tables containing information on the dictionaries involved in the validation (<span class="ty"><tt>Dictionary</tt></span>, <span class="ty"><tt>Tag</tt></span>), the tables containing the entries themselves and their state (<span class="ty"><tt>Entries</tt></span>, <span class="ty"><tt>EntryState</tt></span>, <span class="ty"><tt>EntryValidation</tt></span> and <span class="ty"><tt>Props</tt></span>), and the tables reflecting the relational aspects between the properties of each entry (<span class="ty"><tt>Props</tt></span>, <span class="ty"><tt>Section</tt></span>, <span class="ty"><tt>Category</tt></span>).</p><div class="fig"> <table summary="[Figure 3]" cellpadding="5" class="fig" width="100%"> <tbody> <tr> <td class="td_align_center width_20"> <a href="yr5136fig3.html"><img width="100" height="22" src="yr5136fig3thm.gif" class="figlnkthm img_align_middle" alt="[Figure 3]" /> <br /></a> </td> <td> <span class="font_size_3"><b><a href="yr5136fig3.html" id="FIG3">Figure 3</a></b></span> <br /><span class="font_size_2 caption">Relations between the main tables that compose the framework. The arrows show how one table relates to another. This distribution of tables has been designed for storing the main aspects of the framework: the information of the CIFs and the dictionaries, the way in which the information is displayed, and the users allowed to manage the database.</span></td> </tr> </tbody> </table> </div> <p>Regarding the dictionaries, it is necessary to keep both their metadata and their contents organized in order to perform <a target='Navigator' class="ref_lookup_yellow hideyellow" href='https://dictionary.iucr.org/CIF' onclick="return makeSubWindow("https://dictionary.iucr.org/CIF", 'Navigator')">CIF</a> validations in an efficient way. In addition, the names of the tags of a dictionary might be difficult to interpret, and therefore they need a human-readable form. Taking these considerations into account, <span class="ty"><tt>Dictionary</tt></span> stores the metadata of the dictionaries and <span class="ty"><tt>Tag</tt></span> represents the definition of a tag, indicating the dictionary to which it belongs. Two additional tables (<span class="ty"><tt>TagTitle</tt></span> and <span class="ty"><tt>ExcludedTag</tt></span>) are used for keeping track of the human-readable names of the tags and the tags that must not be stored in the database.</p><p>Entry management deals with two separate tasks given that it is necessary to keep track of not only the contents of the entry itself but also the metadata of the entry and its state. The table <span class="ty"><tt>Entries</tt></span> contains all the specific hard-coded <a target='Navigator' class="ref_lookup_yellow hideyellow" href='https://dictionary.iucr.org/CIF' onclick="return makeSubWindow("https://dictionary.iucr.org/CIF", 'Navigator')">CIF</a> metadata. The current state of the entries is stored in the table <span class="ty"><tt>EntryState</tt></span>. This is very useful for saving several aspects of an entry's state, for example, whether the entry is publicly available or not, the last time it was revised, or any other aspect required for checking data integrity, given a particular implementation. Database administrators might also find it useful to know the dictionaries that were used for validating an entry. This information is stored in <span class="ty"><tt>EntryValidation</tt></span>.</p><p>The contents (the tags with their respective values) of each specific entry are stored in the table <span class="ty"><tt>Props</tt></span>. This table stores one row per value in the original <a target='Navigator' class="ref_lookup_yellow hideyellow" href='https://dictionary.iucr.org/CIF' onclick="return makeSubWindow("https://dictionary.iucr.org/CIF", 'Navigator')">CIF,</a> so even though the <a target='Navigator' class="ref_lookup_yellow hideyellow" href='https://dictionary.iucr.org/CIF' onclick="return makeSubWindow("https://dictionary.iucr.org/CIF", 'Navigator')">CIF</a> relational structures are not translated to a series of tables, the proposed architecture allows us to have a single table to store the information contained in all the CIFs of the database. This makes the writing and querying processes easier. Although not mimicking explicitly the table structure of a <a target='Navigator' class="ref_lookup_yellow hideyellow" href='https://dictionary.iucr.org/CIF' onclick="return makeSubWindow("https://dictionary.iucr.org/CIF", 'Navigator')">CIF,</a> the data are structured and stored in the database in terms of tags and values, and the hierarchies and relations are contained and well defined in the dictionaries; therefore, the relational structure of the <a target='Navigator' class="ref_lookup_yellow hideyellow" href='https://dictionary.iucr.org/CIF' onclick="return makeSubWindow("https://dictionary.iucr.org/CIF", 'Navigator')">CIF</a> data can be reconstructed whenever needed. Thus, a singleton occupies a single row of the table, whereas each value inside a loop is represented via a row. To do so, the table has some columns to correctly represent the value (tag name, type and value) and others to refer to the loop (these columns are ignored for singleton values): an identifier of the loop, the position of the tag within that loop and the position of the value in the list of values corresponding to that loop (<span class="it"><i>i.e.</i></span> the position of the row in which the value appears in the loop). As an example, the loop shown below is stored in the <span class="ty"><tt>Props</tt></span> table as is shown in Table 1<a href="#TABLE1"><img class="linkarrow img_align_bottom img_border_0" src="../../../../../../logos/arrows/j_arr.gif" width="17" height="16" alt="[link]" /></a>:</p> <div class="scheme"><a id="SCHEME2"></a> <img src="yr5136scheme2.gif" alt="[Scheme 2]" /> </div> <div class="table"> <table summary="Example of the storage of a loop" class="bgcolor_FFCC99" cellpadding="2" width="100%"> <tbody> <tr> <td> <table summary="Example of the storage of a loop" class="bgcolor_FFCC99 tbheader" width="100%"> <tbody> <tr> <td align="left" class="bgcolor_FFCC99" valign="bottom"> <p><span class="font_size_3 table_number"><b><a id="TABLE1">Table 1</a></b></span><br /><span class="font_size_2 tbcaption">Example of the storage of a loop</span> </p></td> </tr> </tbody> </table> <table summary="Example of the storage of a loop" class="bgcolor_FFCC99 tbheader" width="100%"> <tbody> <tr> <td align="left" class="bgcolor_FFCC99" valign="bottom"> <div class="tbheadn"><p><span class="font_size_2_tbheadn">Note that this table shows a simplified version of the <span class="ty"><tt>Props</tt></span> table.</span></p></div> </td> </tr> </tbody> </table> <table summary="Example of the storage of a loop" width="100%" > <thead valign="top"> <tr> <th class="bgcolor_FFFFFF" rowspan="1" colspan="1" align="left" charoff="50" valign="bottom"><span class="font_size_2">Loop order</span></th> <th class="bgcolor_FFFFFF" rowspan="1" colspan="1" align="left" charoff="50" valign="bottom"><span class="font_size_2">Tag position</span></th> <th class="bgcolor_FFFFFF" rowspan="1" colspan="1" align="left" charoff="50" valign="bottom"><span class="font_size_2">Value position</span></th> <th class="bgcolor_FFFFFF" rowspan="1" colspan="1" align="left" charoff="50" valign="bottom"><span class="font_size_2">Tag</span></th> <th class="bgcolor_FFFFFF" rowspan="1" colspan="1" align="left" charoff="50" valign="bottom"><span class="font_size_2">Value</span></th> </tr> </thead> <tbody valign="top"> <tr> <td class="bgcolor_FFFFFF" rowspan="1" colspan="1" align="left" valign="top"><span class="font_size_2 table_entry">1</span></td> <td class="bgcolor_FFFFFF" rowspan="1" colspan="1" align="left" valign="top"><span class="font_size_2 table_entry">1</span></td> <td class="bgcolor_FFFFFF" rowspan="1" colspan="1" align="left" valign="top"><span class="font_size_2 table_entry">1</span></td> <td class="bgcolor_FFFFFF" rowspan="1" colspan="1" align="left" valign="top"><span class="font_size_2 table_entry"><span class="ty"><tt>_reflns_class_code</tt></span></span></td> <td class="bgcolor_FFFFFF" rowspan="1" colspan="1" align="left" valign="top"><span class="font_size_2 table_entry"><span class="ty"><tt>Main</tt></span></span></td> </tr> <tr> <td class="bgcolor_FFFFFF" rowspan="1" colspan="1" align="left" valign="top"><span class="font_size_2 table_entry">1</span></td> <td class="bgcolor_FFFFFF" rowspan="1" colspan="1" align="left" valign="top"><span class="font_size_2 table_entry">1</span></td> <td class="bgcolor_FFFFFF" rowspan="1" colspan="1" align="left" valign="top"><span class="font_size_2 table_entry">2</span></td> <td class="bgcolor_FFFFFF" rowspan="1" colspan="1" align="left" valign="top"><span class="font_size_2 table_entry"><span class="ty"><tt>_reflns_class_code</tt></span></span></td> <td class="bgcolor_FFFFFF" rowspan="1" colspan="1" align="left" valign="top"><span class="font_size_2 table_entry"><span class="ty"><tt>Sat1</tt></span></span></td> </tr> <tr> <td class="bgcolor_FFFFFF" rowspan="1" colspan="1" align="left" valign="top"><span class="font_size_2 table_entry">1</span></td> <td class="bgcolor_FFFFFF" rowspan="1" colspan="1" align="left" valign="top"><span class="font_size_2 table_entry">2</span></td> <td class="bgcolor_FFFFFF" rowspan="1" colspan="1" align="left" valign="top"><span class="font_size_2 table_entry">1</span></td> <td class="bgcolor_FFFFFF" rowspan="1" colspan="1" align="left" valign="top"><span class="font_size_2 table_entry"><span class="ty"><tt>_reflns_class_description</tt></span></span></td> <td class="bgcolor_FFFFFF" rowspan="1" colspan="1" align="left" valign="top"><span class="font_size_2 table_entry"><span class="ty"><tt>Main reflections</tt></span></span></td> </tr> <tr> <td class="bgcolor_FFFFFF" rowspan="1" colspan="1" align="left" charoff="50" valign="top"><span class="font_size_2 table_entry">1</span></td> <td class="bgcolor_FFFFFF" rowspan="1" colspan="1" align="left" charoff="50" valign="top"><span class="font_size_2 table_entry">2</span></td> <td class="bgcolor_FFFFFF" rowspan="1" colspan="1" align="left" charoff="50" valign="top"><span class="font_size_2 table_entry">2</span></td> <td class="bgcolor_FFFFFF" rowspan="1" colspan="1" align="left" charoff="50" valign="top"><span class="font_size_2 table_entry"><span class="ty"><tt>_reflns_class_description</tt></span></span></td> <td class="bgcolor_FFFFFF" rowspan="1" colspan="1" align="left" charoff="50" valign="top"><span class="font_size_2 table_entry"><span class="ty"><tt>1st-order satellites</tt></span></span></td> </tr> <tr> <td class="bgcolor_FFFFFF" rowspan="1" colspan="1" align="left" valign="top"><span class="font_size_2 table_entry">1</span></td> <td class="bgcolor_FFFFFF" rowspan="1" colspan="1" align="left" valign="top"><span class="font_size_2 table_entry">3</span></td> <td class="bgcolor_FFFFFF" rowspan="1" colspan="1" align="left" valign="top"><span class="font_size_2 table_entry">1</span></td> <td class="bgcolor_FFFFFF" rowspan="1" colspan="1" align="left" valign="top"><span class="font_size_2 table_entry"><span class="ty"><tt>_reflns_class_number_total</tt></span></span></td> <td class="bgcolor_FFFFFF" rowspan="1" colspan="1" align="left" valign="top"><span class="font_size_2 table_entry"><span class="ty"><tt>1153</tt></span></span></td> </tr> <tr> <td class="bgcolor_FFFFFF" rowspan="1" colspan="1" align="left" valign="top"><span class="font_size_2 table_entry">1</span></td> <td class="bgcolor_FFFFFF" rowspan="1" colspan="1" align="left" valign="top"><span class="font_size_2 table_entry">3</span></td> <td class="bgcolor_FFFFFF" rowspan="1" colspan="1" align="left" valign="top"><span class="font_size_2 table_entry">2</span></td> <td class="bgcolor_FFFFFF" rowspan="1" colspan="1" align="left" valign="top"><span class="font_size_2 table_entry"><span class="ty"><tt>_reflns_class_number_total</tt></span></span></td> <td class="bgcolor_FFFFFF" rowspan="1" colspan="1" align="left" valign="top"><span class="font_size_2 table_entry"><span class="ty"><tt>2301</tt></span></span></td> </tr> <tr> <td class="bgcolor_FFFFFF" rowspan="1" colspan="1" align="left" valign="top"><span class="font_size_2 table_entry">1</span></td> <td class="bgcolor_FFFFFF" rowspan="1" colspan="1" align="left" valign="top"><span class="font_size_2 table_entry">4</span></td> <td class="bgcolor_FFFFFF" rowspan="1" colspan="1" align="left" valign="top"><span class="font_size_2 table_entry">1</span></td> <td class="bgcolor_FFFFFF" rowspan="1" colspan="1" align="left" valign="top"><span class="font_size_2 table_entry"><span class="ty"><tt>_reflns_class_number_gt</tt></span></span></td> <td class="bgcolor_FFFFFF" rowspan="1" colspan="1" align="left" valign="top"><span class="font_size_2 table_entry"><span class="ty"><tt>885</tt></span></span></td> </tr> <tr> <td class="bgcolor_FFFFFF" rowspan="1" colspan="1" align="left" valign="top"><span class="font_size_2 table_entry">1</span></td> <td class="bgcolor_FFFFFF" rowspan="1" colspan="1" align="left" valign="top"><span class="font_size_2 table_entry">4</span></td> <td class="bgcolor_FFFFFF" rowspan="1" colspan="1" align="left" valign="top"><span class="font_size_2 table_entry">2</span></td> <td class="bgcolor_FFFFFF" rowspan="1" colspan="1" align="left" valign="top"><span class="font_size_2 table_entry"><span class="ty"><tt>_reflns_class_number_gt</tt></span></span></td> <td class="bgcolor_FFFFFF" rowspan="1" colspan="1" align="left" valign="top"><span class="font_size_2 table_entry"><span class="ty"><tt>1751</tt></span></span></td> </tr> <tr> <td class="bgcolor_FFFFFF" rowspan="1" colspan="1" align="left" valign="top"><span class="font_size_2 table_entry">1</span></td> <td class="bgcolor_FFFFFF" rowspan="1" colspan="1" align="left" valign="top"><span class="font_size_2 table_entry">5</span></td> <td class="bgcolor_FFFFFF" rowspan="1" colspan="1" align="left" valign="top"><span class="font_size_2 table_entry">1</span></td> <td class="bgcolor_FFFFFF" rowspan="1" colspan="1" align="left" valign="top"><span class="font_size_2 table_entry"><span class="ty"><tt>_reflns_class_R_factor_gt</tt></span></span></td> <td class="bgcolor_FFFFFF" rowspan="1" colspan="1" align="left" valign="top"><span class="font_size_2 table_entry"><span class="ty"><tt>0.0236</tt></span></span></td> </tr> <tr> <td class="bgcolor_FFFFFF" rowspan="1" colspan="1" align="left" valign="top"><span class="font_size_2 table_entry">1</span></td> <td class="bgcolor_FFFFFF" rowspan="1" colspan="1" align="left" valign="top"><span class="font_size_2 table_entry">5</span></td> <td class="bgcolor_FFFFFF" rowspan="1" colspan="1" align="left" valign="top"><span class="font_size_2 table_entry">2</span></td> <td class="bgcolor_FFFFFF" rowspan="1" colspan="1" align="left" valign="top"><span class="font_size_2 table_entry"><span class="ty"><tt>_reflns_class_R_factor_gt</tt></span></span></td> <td class="bgcolor_FFFFFF" rowspan="1" colspan="1" align="left" valign="top"><span class="font_size_2 table_entry"><span class="ty"><tt>0.0292</tt></span></span></td> </tr> <tr> <td class="bgcolor_FFFFFF" rowspan="1" colspan="1" align="left" valign="top"><span class="font_size_2 table_entry">1</span></td> <td class="bgcolor_FFFFFF" rowspan="1" colspan="1" align="left" valign="top"><span class="font_size_2 table_entry">6</span></td> <td class="bgcolor_FFFFFF" rowspan="1" colspan="1" align="left" valign="top"><span class="font_size_2 table_entry">1</span></td> <td class="bgcolor_FFFFFF" rowspan="1" colspan="1" align="left" valign="top"><span class="font_size_2 table_entry"><span class="ty"><tt>_reflns_class_R_factor_all</tt></span></span></td> <td class="bgcolor_FFFFFF" rowspan="1" colspan="1" align="left" valign="top"><span class="font_size_2 table_entry"><span class="ty"><tt>0.0333</tt></span></span></td> </tr> <tr> <td class="bgcolor_FFFFFF" rowspan="1" colspan="1" align="left" valign="top"><span class="font_size_2 table_entry">1</span></td> <td class="bgcolor_FFFFFF" rowspan="1" colspan="1" align="left" valign="top"><span class="font_size_2 table_entry">6</span></td> <td class="bgcolor_FFFFFF" rowspan="1" colspan="1" align="left" valign="top"><span class="font_size_2 table_entry">2</span></td> <td class="bgcolor_FFFFFF" rowspan="1" colspan="1" align="left" valign="top"><span class="font_size_2 table_entry"><span class="ty"><tt>_reflns_class_R_factor_all</tt></span></span></td> <td class="bgcolor_FFFFFF" rowspan="1" colspan="1" align="left" valign="top"><span class="font_size_2 table_entry"><span class="ty"><tt>0.0484</tt></span></span></td> </tr> <tr> <td class="bgcolor_FFFFFF" rowspan="1" colspan="1" align="left" valign="top"><span class="font_size_2 table_entry">1</span></td> <td class="bgcolor_FFFFFF" rowspan="1" colspan="1" align="left" valign="top"><span class="font_size_2 table_entry">7</span></td> <td class="bgcolor_FFFFFF" rowspan="1" colspan="1" align="left" valign="top"><span class="font_size_2 table_entry">1</span></td> <td class="bgcolor_FFFFFF" rowspan="1" colspan="1" align="left" valign="top"><span class="font_size_2 table_entry"><span class="ty"><tt>_reflns_class_wR_factor_all</tt></span></span></td> <td class="bgcolor_FFFFFF" rowspan="1" colspan="1" align="left" valign="top"><span class="font_size_2 table_entry"><span class="ty"><tt>0.0269</tt></span></span></td> </tr> <tr> <td class="bgcolor_FFFFFF" rowspan="1" colspan="1" align="left" valign="top"><span class="font_size_2 table_entry">1</span></td> <td class="bgcolor_FFFFFF" rowspan="1" colspan="1" align="left" valign="top"><span class="font_size_2 table_entry">7</span></td> <td class="bgcolor_FFFFFF" rowspan="1" colspan="1" align="left" valign="top"><span class="font_size_2 table_entry">2</span></td> <td class="bgcolor_FFFFFF" rowspan="1" colspan="1" align="left" valign="top"><span class="font_size_2 table_entry"><span class="ty"><tt>_reflns_class_wR_factor_all</tt></span></span></td> <td class="bgcolor_FFFFFF" rowspan="1" colspan="1" align="left" valign="top"><span class="font_size_2 table_entry"><span class="ty"><tt>0.0338</tt></span></span></td> </tr> <tr><td colspan="5"></td></tr></tbody> </table> </td> </tr> </tbody> </table> </div> <p>Additional columns are used to store the type of the value, and the raw and processed values of string values that are properly shown in HTML: numerical values are shown along with their <a target='Navigator' class="ref_lookup_orange hideorange" href='https://goldbook.iupac.org/S05928.html' onclick="return makeSubWindow("https://goldbook.iupac.org/S05928.html", 'Navigator')">standard uncertainty,</a> whereas string values are displayed with unicode characters replacing the special characters defined by the <a target='Navigator' class="ref_lookup_yellow hideyellow" href='https://dictionary.iucr.org/CIF' onclick="return makeSubWindow("https://dictionary.iucr.org/CIF", 'Navigator')">CIF</a> standard.</p><p>This design is particularly successful since it avoids the use of fixed-size tables, which force all CIFs to include exactly the same data names. In addition, tags allowed to be looped together inside a <a target='Navigator' class="ref_lookup_yellow hideyellow" href='https://dictionary.iucr.org/CIF' onclick="return makeSubWindow("https://dictionary.iucr.org/CIF", 'Navigator')">CIF</a> may represent a matrix. Therefore, it is convenient to have a table for storing these types of structures. In order to store a matrix, <span class="it"><i>A</i></span>, of dimensions <img src="teximages/yr5136fi1.svg" alt="[N\times M]" class="img_align_bottom mathimage" style="position: relative; display: inline; padding-top: 0px; padding-bottom: 0px; vertical-align: -0.178657999999995pt;" height="11" width="42" /> a new row is created in the auxiliary table <span class="ty"><tt>Matrix</tt></span> and for every matrix element <span class="fi tth"> <i>a</i><sub><i>ij</i></sub></span> (<img src="teximages/yr5136fi1.svg" alt="[N\times M]" class="img_align_bottom mathimage" style="position: relative; display: inline; padding-top: 0px; padding-bottom: 0px; vertical-align: -0.178657999999995pt;" height="11" width="42" /> in total) a new entry is created in a table called <span class="ty"><tt>MatrixTag</tt></span>.</p><p>In order to keep the application as human readable as possible, the tags stored in the database can be classified into different categories and, in the same way, categories can be classified into different sections. As these categories and sections may vary depending on the application, it is important to keep them organized in tables. The tables <span class="ty"><tt>Section</tt></span> and <span class="ty"><tt>Category</tt></span> are used for storing these two structures. Apart from them, for making complex data queries with ease, the <span class="ty"><tt>SearchField</tt></span> table keeps the different search operators that can be used when looking for information.</p><p>Finally, information about the administrators (name, username, password, email…) is saved in the <span class="ty"><tt>Users</tt></span> table.</p></div> <div id="DIVSEC5" class="sec1"> <h3><a id="SEC5"></a>5. Public site</h3> <p>The public site of the framework allows users to access the data stored in the database by interacting through the graphical interface. To facilitate the process of looking for data, a search engine that allows complex searches in the database has been designed. Moreover, as has been mentioned before, the public site is highly customizable, allowing easy manipulation of both the search engine and the interfaces for many different types of applications.</p> <div id="DIVSEC5.1" class="sec2"> <h4><a id="SEC5.1"></a>5.1. The search engine</h4> <p>The search form allows the user to concatenate operations, permitting complex searches and the ability to make a more fine-grained exploration of databases with a considerable number of entries. Although the search engine is based on formal <a target='Navigator' class="ref_lookup_yellow hideyellow" href='https://dictionary.iucr.org/CIF' onclick="return makeSubWindow("https://dictionary.iucr.org/CIF", 'Navigator')">CIF</a> data names, the search forms show an informal name or rubric for each search field. These labels can be modified, with absolute flexibility, from the administrative site.</p></div> <div id="DIVSEC5.2" class="sec2"> <h4><a id="SEC5.2"></a>5.2. Rendering the contents of the database</h4> <p>The frontend has been designed to render, in a human-readable way, the information stored in the database. Nevertheless, in order to ensure that the information is displayed correctly, the process of retrieving the data must be efficient and well defined.</p><p>First it is necessary to verify that an unprivileged user is not trying to access a private entry file. After that, the application retrieves the metadata of the record selected by the user, which is easily achieved by querying the database with a unique identifier. Once this is done, the application obtains the tags and matrices of the entry. Because of the way in which the database and the interfaces are designed, these two pieces of information require an additional filtering process. Then, the tags of every <a target='Navigator' class="ref_lookup_yellow hideyellow" href='https://dictionary.iucr.org/CIF' onclick="return makeSubWindow("https://dictionary.iucr.org/CIF", 'Navigator')">CIF</a> data block must be classified into the different sections that are defined by the administrators. Hence, the first step is to read the <a target='Navigator' class="ref_lookup_yellow hideyellow" href='https://dictionary.iucr.org/CIF' onclick="return makeSubWindow("https://dictionary.iucr.org/CIF", 'Navigator')">CIF</a> categories that belong to each section, and in the same way the tags that correspond to those <a target='Navigator' class="ref_lookup_yellow hideyellow" href='https://dictionary.iucr.org/CIF' onclick="return makeSubWindow("https://dictionary.iucr.org/CIF", 'Navigator')">CIF</a> categories.</p><p>For every tag, its value (together with its <a target='Navigator' class="ref_lookup_orange hideorange" href='https://goldbook.iupac.org/S05928.html' onclick="return makeSubWindow("https://goldbook.iupac.org/S05928.html", 'Navigator')">standard uncertainty</a> and units, if applicable) and metadata (category of the tag and dictionary where it is defined) are obtained, if it is not part of a loop. On the other hand, the values and metadata of tags belonging to the same loop are stored together using list structures. Finally, as the category of each tag is obtained, the tags are classified into the different sections using those categories.</p><p>As far as the matrices are concerned, the first step is to check if the loop identifier indicates it is a matrix. In that case, the values of the tags of the loop are internally represented as separated lists. Then, a reshaping procedure converts these lists into a single matrix. For representing a matrix of dimensions <img src="teximages/yr5136fi1.svg" alt="[N\times M]" class="img_align_bottom mathimage" style="position: relative; display: inline; padding-top: 0px; padding-bottom: 0px; vertical-align: -0.178657999999995pt;" height="11" width="42" />, a separate matrix is first created. After that, as every value of the loop is stored in the database with its respective (<span class="it"><i>i</i></span>, <span class="it"><i>j</i></span>) coordinates, each value in the loop is copied into the created matrix. This process is done for every matrix of the input <a target='Navigator' class="ref_lookup_yellow hideyellow" href='https://dictionary.iucr.org/CIF' onclick="return makeSubWindow("https://dictionary.iucr.org/CIF", 'Navigator')">CIF.</a> Finally, the information obtained is rendered.</p></div> </div> <div id="DIVSEC6" class="sec1"> <h3><a id="SEC6"></a>6. A proof of concept: the B-IncStrDB</h3> <p>From the beginning of the Bilbao Crystallographic Server (Aroyo <span class="it"><i>et al.</i></span>, 2006<a href="#BB3"><img class="linkarrow img_align_bottom img_border_0" src="../../../../../../logos/arrows/j_arr.gif" width="17" height="16" alt="[Aroyo, M. I., Perez-Mato, J. M., Capillas, C., Kroumova, E., Ivantchev, S., Madariaga, G., Kirov, A. & Wondratschek, H. (2006). Z. Kristallogr. Cryst. Mater. 221, 15-27.]" title="Aroyo, M. I., Perez-Mato, J. M., Capillas, C., Kroumova, E., Ivantchev, S., Madariaga, G., Kirov, A. & Wondratschek, H. (2006). Z. Kristallogr. Cryst. Mater. 221, 15-27." /></a>) and given that there was, within the research group that maintained it, a very active line focused on incommensurate modulated structures, the possibility arose of starting a database dedicated to this novel (in those times) class of materials. Two fundamental milestones contributed to the beginning of this task: the standardization of the description of the modulated structures by the IUCr Commission on Aperiodic Crystals (Chapuis <span class="it"><i>et al.</i></span>, 1997<a id="sourceBB9"></a><a href="#BB9"><img class="linkarrow img_align_bottom img_border_0" src="../../../../../../logos/arrows/j_arr.gif" width="17" height="16" alt="[Chapuis, G., Farkas-Jahnke, M., Pérez-Mato, J. M., Senechal, M., Steurer, W., Janot, C., Pandey, D. & Yamamoto, A. (1997). Acta Cryst. A53, 95-100.]" title="Chapuis, G., Farkas-Jahnke, M., Pérez-Mato, J. M., Senechal, M., Steurer, W., Janot, C., Pandey, D. & Yamamoto, A. (1997). Acta Cryst. A53, 95-100." /></a>) and the development of a <a target='Navigator' class="ref_lookup_yellow hideyellow" href='https://dictionary.iucr.org/CIF' onclick="return makeSubWindow("https://dictionary.iucr.org/CIF", 'Navigator')">CIF</a> dictionary including the descriptors proposed by said commission (Madariaga, 2006<a href="#BB26"><img class="linkarrow img_align_bottom img_border_0" src="../../../../../../logos/arrows/j_arr.gif" width="17" height="16" alt="[Madariaga, G. (2006). International Tables for Crystallography, Vol. G, ch. 4.3, pp. 270-289. Chester: IUCr.]" title="Madariaga, G. (2006). International Tables for Crystallography, Vol. G, ch. 4.3, pp. 270-289. Chester: IUCr." /></a>). In this way, articles with structural content present in the literature began to be compiled. The information was extracted, analyzed and, so far as was possible, standardized and stored in hand-built CIFs. Obviously, publications grew in number more than it was possible to assimilate. At the same time, the increase in complexity of the analyzed structures required more descriptors than those found in the standard dictionary. Fortunately, the most established <a target='Navigator' class="ref_lookup_yellow hideyellow" href='https://dictionary.iucr.org/Refinement' onclick="return makeSubWindow("https://dictionary.iucr.org/Refinement", 'Navigator')">refinement</a> program (Petříček <span class="it"><i>et al.</i></span>, 2014<a id="sourceBB32"></a><a href="#BB32"><img class="linkarrow img_align_bottom img_border_0" src="../../../../../../logos/arrows/j_arr.gif" width="17" height="16" alt="[Petříček, V., Dušek, M. & Palatinus, L. (2014). Z. Kristallogr. Cryst. Mater. 229, 345-352.]" title="Petříček, V., Dušek, M. & Palatinus, L. (2014). Z. Kristallogr. Cryst. Mater. 229, 345-352." /></a>) began producing CIFs automatically. However, the structure of those CIFs varied throughout the program versions, requiring manual adjustments by specialized personnel. In this context the Bilbao Incommensurate Structures Database (B-IncStrDB) was established in 2012. It was implemented on <span class="it"><i>MySQL</i></span> (Widenius <span class="it"><i>et al.</i></span>, 2002<a id="sourceBB44"></a><a href="#BB44"><img class="linkarrow img_align_bottom img_border_0" src="../../../../../../logos/arrows/j_arr.gif" width="17" height="16" alt="[Widenius, M., Axmark, D. & DuBois, P. (2002). Mysql Reference Manual. Sebastopol: O'Reilly.]" title="Widenius, M., Axmark, D. & DuBois, P. (2002). Mysql Reference Manual. Sebastopol: O'Reilly." /></a>) and was linked to the Bilbao Crystallographic Server, that is, it was publicly accessible. The input interface parsed the CIFs, extracting the information to include in the database. It lacked a validator and only the values of certain hard-coded tags were extracted from the <a target='Navigator' class="ref_lookup_yellow hideyellow" href='https://dictionary.iucr.org/CIF' onclick="return makeSubWindow("https://dictionary.iucr.org/CIF", 'Navigator')">CIF.</a> Taking into account that the authors of the publications sometimes manually modified the CIFs, the task of entering the data could be frustrating. It became evident that there was a need for a <a target='Navigator' class="ref_lookup_yellow hideyellow" href='https://dictionary.iucr.org/CIF' onclick="return makeSubWindow("https://dictionary.iucr.org/CIF", 'Navigator')">CIF</a> validator, not only for the database but for the entire crystallographic server, since it uses CIFs in several of its programs. Even so, some of the initial data storage strategy of the database has been preserved in the current version of the B-IncStrDB. The IUCr has given the database a significant boost by considering it the official repository of structural information for modulated structures and composites, including, in each publication, a direct link to the corresponding entry in the database.</p><p>The new version of the modulated structure database (for historical reasons the name B-IncStrDB has been preserved) is a particular implementation of the application described in the previous sections, which uses the official IUCr dictionaries (Hall & McMahon, 2006<a href="#BB23"><img class="linkarrow img_align_bottom img_border_0" src="../../../../../../logos/arrows/j_arr.gif" width="17" height="16" alt="[Hall, S. R. & McMahon, B. (2006). Editors. International Tables for Crystallography, Vol. G, Definition and Exchange of Crystallographic Data. Chester: IUCr.]" title="Hall, S. R. & McMahon, B. (2006). Editors. International Tables for Crystallography, Vol. G, Definition and Exchange of Crystallographic Data. Chester: IUCr." /></a>) as a reference against which all the entries included in the database have been strictly validated. Currently, two additional local dictionaries are also required to validate some unofficial data names used by structural <a target='Navigator' class="ref_lookup_yellow hideyellow" href='https://dictionary.iucr.org/Refinement' onclick="return makeSubWindow("https://dictionary.iucr.org/Refinement", 'Navigator')">refinement</a> programs [in practice, only <span class="it"><i>JANA2020</i></span> (Petříček <span class="it"><i>et al.</i></span>, 2023<a id="sourceBB33"></a><a href="#BB33"><img class="linkarrow img_align_bottom img_border_0" src="../../../../../../logos/arrows/j_arr.gif" width="17" height="16" alt="[Petříček, V., Palatinus, L., Plášil, J. & Dušek, M. (2023). Z. Kristallogr. Cryst. Mater. 238, 271-282.]" title="Petříček, V., Palatinus, L., Plášil, J. & Dušek, M. (2023). Z. Kristallogr. Cryst. Mater. 238, 271-282." /></a>) and earlier versions are widely used for the <a target='Navigator' class="ref_lookup_yellow hideyellow" href='https://dictionary.iucr.org/Refinement' onclick="return makeSubWindow("https://dictionary.iucr.org/Refinement", 'Navigator')">refinement</a> of modulated structures] that should disappear and will be properly aliased within the forthcoming DDLm release of the msCIF dictionary (development version available at <a href="https://github.com/COMCIFS/Modulated_Structures">https://github.com/COMCIFS/Modulated_Structures</a>). The only explicit dependencies on specific data names are the publication data, the chemical formula and, to determine whether the structural data belong to a composite, the number of subsystems it contains. Those items are used as metadata of the entries and shown on the main page of the public site. Even so, the input data themselves constitute the greatest weakness of the database, since sometimes they have had to be manually standardized and could contain errors not originating from the authors of the publication. The most relevant cases are annotated when the structure is displayed. In no case has any value been omitted or corrected, even if it did not have a clear physical meaning.</p><p>Regarding the used libraries, the backend is a <span class="it"><i>Django</i></span> (Django Software Foundation, 2019<a id="sourceBB11"></a><a href="#BB11"><img class="linkarrow img_align_bottom img_border_0" src="../../../../../../logos/arrows/j_arr.gif" width="17" height="16" alt="[Django Software Foundation (2019). Django, https://djangoproject.com.]" title="Django Software Foundation (2019). Django, https://djangoproject.com." /></a>) application written in Python 3 (Van Rossum & Drake, 2009<a id="sourceBB42"></a><a href="#BB42"><img class="linkarrow img_align_bottom img_border_0" src="../../../../../../logos/arrows/j_arr.gif" width="17" height="16" alt="[Van Rossum, G. & Drake, F. L. (2009). Python 3 Reference Manual. Scotts Valley,: CreateSpace.]" title="Van Rossum, G. & Drake, F. L. (2009). Python 3 Reference Manual. Scotts Valley,: CreateSpace." /></a>). The processing and validation of the CIFs are done by using the code <span class="it"><i>iotbx.cif</i></span> (Gildea <span class="it"><i>et al.</i></span>, 2011<a href="#BB15"><img class="linkarrow img_align_bottom img_border_0" src="../../../../../../logos/arrows/j_arr.gif" width="17" height="16" alt="[Gildea, R. J., Bourhis, L. J., Dolomanov, O. V., Grosse-Kunstleve, R. W., Puschmann, H., Adams, P. D. & Howard, J. A. K. (2011). J. Appl. Cryst. 44, 1259-1263.]" title="Gildea, R. J., Bourhis, L. J., Dolomanov, O. V., Grosse-Kunstleve, R. W., Puschmann, H., Adams, P. D. & Howard, J. A. K. (2011). J. Appl. Cryst. 44, 1259-1263." /></a>) supplied with the <span class="it"><i>Computational Crystallography Toolbox</i></span> (<span class="it"><i>cctbx</i></span>) (Grosse-Kunstleve <span class="it"><i>et al.</i></span>, 2002<a id="sourceBB17"></a><a href="#BB17"><img class="linkarrow img_align_bottom img_border_0" src="../../../../../../logos/arrows/j_arr.gif" width="17" height="16" alt="[Grosse-Kunstleve, R. W., Sauter, N. K., Moriarty, N. W. & Adams, P. D. (2002). J. Appl. Cryst. 35, 126-136.]" title="Grosse-Kunstleve, R. W., Sauter, N. K., Moriarty, N. W. & Adams, P. D. (2002). J. Appl. Cryst. 35, 126-136." /></a>). The present validator is intended to give external users (and also the administrators) a tool to check if their CIFs are appropriate for submission to the database or elsewhere. At the time of writing, the current validator only supports DDL1-based dictionaries. However, the validator is designed to be an interchangeable piece of software that can be updated, completely replaced by a more modern and enhanced program, or even run in a standalone way, separate from the database. This philosophy will allow a rapid transition to DDLm dictionaries. The current list of warnings and errors raised by the validator is shown in Table 2<a href="#TABLE2"><img class="linkarrow img_align_bottom img_border_0" src="../../../../../../logos/arrows/j_arr.gif" width="17" height="16" alt="[link]" /></a>.</p><div class="table"> <table summary="List of warnings and errors raised by iotbx.cif" class="bgcolor_FFCC99" cellpadding="2" width="100%"> <tbody> <tr> <td> <table summary="List of warnings and errors raised by iotbx.cif" class="bgcolor_FFCC99 tbheader" width="100%"> <tbody> <tr> <td align="left" class="bgcolor_FFCC99" valign="bottom"> <p><span class="font_size_3 table_number"><b><a id="TABLE2">Table 2</a></b></span><br /><span class="font_size_2 tbcaption">List of warnings and errors raised by <span class="it"><i>iotbx.cif</i></span></span> </p></td> </tr> </tbody> </table> <table summary="List of warnings and errors raised by iotbx.cif" class="bgcolor_FFCC99 tbheader" width="100%"> <tbody> <tr> <td align="left" class="bgcolor_FFCC99" valign="bottom"> </td> </tr> </tbody> </table> <table summary="List of warnings and errors raised by iotbx.cif" width="100%" > <thead valign="top"> <tr> <th class="bgcolor_FFFFFF" rowspan="1" colspan="1" align="left" charoff="50" valign="bottom"><span class="font_size_2">Type</span></th> <th class="bgcolor_FFFFFF" rowspan="1" colspan="1" align="left" charoff="50" valign="bottom"><span class="font_size_2">Message</span></th> </tr> </thead> <tbody valign="top"> <tr> <td class="bgcolor_FFFFFF" rowspan="1" colspan="1" align="left" valign="top"><span class="font_size_2 table_entry">Warning</span></td> <td class="bgcolor_FFFFFF" rowspan="1" colspan="1" align="left" valign="top"><span class="font_size_2 table_entry">Tag not defined in the dictionary</span></td> </tr> <tr> <td class="bgcolor_FFFFFF" rowspan="1" colspan="1" align="left" valign="top"><span class="font_size_2 table_entry">Warning</span></td> <td class="bgcolor_FFFFFF" rowspan="1" colspan="1" align="left" valign="top"><span class="font_size_2 table_entry">Case-sensitive match failure for a value</span></td> </tr> <tr> <td class="bgcolor_FFFFFF" rowspan="1" colspan="1" align="left" valign="top"><span class="font_size_2 table_entry">Warning</span></td> <td class="bgcolor_FFFFFF" rowspan="1" colspan="1" align="left" valign="top"><span class="font_size_2 table_entry">Obsolete definition</span></td> </tr> <tr> <td class="bgcolor_FFFFFF" rowspan="1" colspan="1" align="left" valign="top"><span class="font_size_2 table_entry">Error</span></td> <td class="bgcolor_FFFFFF" rowspan="1" colspan="1" align="left" valign="top"><span class="font_size_2 table_entry">Value type differs from indicated in data-name definition</span></td> </tr> <tr> <td class="bgcolor_FFFFFF" rowspan="1" colspan="1" align="left" valign="top"><span class="font_size_2 table_entry">Error</span></td> <td class="bgcolor_FFFFFF" rowspan="1" colspan="1" align="left" valign="top"><span class="font_size_2 table_entry">Standard uncertainty not applicable to this data name</span></td> </tr> <tr> <td class="bgcolor_FFFFFF" rowspan="1" colspan="1" align="left" valign="top"><span class="font_size_2 table_entry">Error</span></td> <td class="bgcolor_FFFFFF" rowspan="1" colspan="1" align="left" valign="top"><span class="font_size_2 table_entry">Value outside of the permitted range</span></td> </tr> <tr> <td class="bgcolor_FFFFFF" rowspan="1" colspan="1" align="left" valign="top"><span class="font_size_2 table_entry">Error</span></td> <td class="bgcolor_FFFFFF" rowspan="1" colspan="1" align="left" valign="top"><span class="font_size_2 table_entry">Value not in the enumeration list of the data name</span></td> </tr> <tr> <td class="bgcolor_FFFFFF" rowspan="1" colspan="1" align="left" valign="top"><span class="font_size_2 table_entry">Error</span></td> <td class="bgcolor_FFFFFF" rowspan="1" colspan="1" align="left" valign="top"><span class="font_size_2 table_entry">Both data item and exclusive alternate, present in data block</span></td> </tr> <tr> <td class="bgcolor_FFFFFF" rowspan="1" colspan="1" align="left" valign="top"><span class="font_size_2 table_entry">Error</span></td> <td class="bgcolor_FFFFFF" rowspan="1" colspan="1" align="left" valign="top"><span class="font_size_2 table_entry">Missing value associated to a data name</span></td> </tr> <tr> <td class="bgcolor_FFFFFF" rowspan="1" colspan="1" align="left" valign="top"><span class="font_size_2 table_entry">Error</span></td> <td class="bgcolor_FFFFFF" rowspan="1" colspan="1" align="left" valign="top"><span class="font_size_2 table_entry">Data name cannot be declared in a loop</span></td> </tr> <tr> <td class="bgcolor_FFFFFF" rowspan="1" colspan="1" align="left" valign="top"><span class="font_size_2 table_entry">Error</span></td> <td class="bgcolor_FFFFFF" rowspan="1" colspan="1" align="left" valign="top"><span class="font_size_2 table_entry">Data name can only be declared in a loop</span></td> </tr> <tr> <td class="bgcolor_FFFFFF" rowspan="1" colspan="1" align="left" valign="top"><span class="font_size_2 table_entry">Error</span></td> <td class="bgcolor_FFFFFF" rowspan="1" colspan="1" align="left" valign="top"><span class="font_size_2 table_entry">Multiple categories mixed in a loop</span></td> </tr> <tr> <td class="bgcolor_FFFFFF" rowspan="1" colspan="1" align="left" valign="top"><span class="font_size_2 table_entry">Error</span></td> <td class="bgcolor_FFFFFF" rowspan="1" colspan="1" align="left" valign="top"><span class="font_size_2 table_entry">Value assigned in child data name not found in parent data name</span></td> </tr> <tr> <td class="bgcolor_FFFFFF" rowspan="1" colspan="1" align="left" valign="top"><span class="font_size_2 table_entry">Error</span></td> <td class="bgcolor_FFFFFF" rowspan="1" colspan="1" align="left" valign="top"><span class="font_size_2 table_entry">Missing parent data name for loop containing child data name</span></td> </tr> <tr> <td class="bgcolor_FFFFFF" rowspan="1" colspan="1" align="left" valign="top"><span class="font_size_2 table_entry">Error</span></td> <td class="bgcolor_FFFFFF" rowspan="1" colspan="1" align="left" valign="top"><span class="font_size_2 table_entry">Missing required reference data name(s) for a loop</span></td> </tr> <tr><td colspan="2"></td></tr></tbody> </table> </td> </tr> </tbody> </table> </div> <p>The processed data are stored in a <span class="it"><i>SQLite</i></span> database (Hipp, 2020<a id="sourceBB22"></a><a href="#BB22"><img class="linkarrow img_align_bottom img_border_0" src="../../../../../../logos/arrows/j_arr.gif" width="17" height="16" alt="[Hipp, R. D. (2020). SQLite, https://www.sqlite.org/index.html.]" title="Hipp, R. D. (2020). SQLite, https://www.sqlite.org/index.html." /></a>). Even though <span class="it"><i>Django</i></span> supports other relational databases such as <span class="it"><i>MySQL</i></span> and <span class="it"><i>MariaDB</i></span>, <span class="it"><i>SQLite</i></span> was chosen in this case because of its easy maintenance and portability. The frontend is mostly based on <span class="it"><i>Bootstrap</i></span> (Twitter, 2019<a id="sourceBB40"></a><a href="#BB40"><img class="linkarrow img_align_bottom img_border_0" src="../../../../../../logos/arrows/j_arr.gif" width="17" height="16" alt="[Twitter (2019). Bootstrap, https://getbootstrap.com.]" title="Twitter (2019). Bootstrap, https://getbootstrap.com." /></a>) and uses <span class="it"><i>Jinja</i></span> to parse the information coming from the backend. It also has some custom-defined CSS rules to modify style-related parameters.</p><p>The following sections present an overview of the current status of the database, accessible through the link <a href="https://www.cryst.ehu.eus/bincstrdb/">https://www.cryst.ehu.eus/bincstrdb/</a>.</p><p>As the database has been built according to the general design presented in the previous sections, it is divided into two main parts: the public site and the administrative site. Below is a more detailed description of the public site and an explanation of how the administrative site has been adapted for this use case.</p> <div id="DIVSEC6.1" class="sec2"> <h4><a id="SEC6.1"></a>6.1. The public site</h4> <p>The public site, which tries to be simple in presentation, consists of a search section, the query results and a header, showing a contact link and from where, through a login, the administrative site can be accessed. The validator is accessible, also from the header, regardless of the action being performed on the database.</p> <div id="DIVSEC6.1.1" class="sec3"> <h5><a id="SEC6.1.1"></a>6.1.1. Visualization of the database contents</h5> <p>The main page of the website shows the entries stored in the database in a paginated list, showing a projection of the structure and the minimum information needed to easily identify the entries (title of the publication, authors, journal reference and DOI) (see Fig. 4<a href="#FIG4"><img class="linkarrow img_align_bottom img_border_0" src="../../../../../../logos/arrows/j_arr.gif" width="17" height="16" alt="[link]" /></a>). That information is shown along with three buttons: to view the <a target='Navigator' class="ref_lookup_yellow hideyellow" href='https://dictionary.iucr.org/CIF' onclick="return makeSubWindow("https://dictionary.iucr.org/CIF", 'Navigator')">CIF</a> data; to directly download the uploaded <a target='Navigator' class="ref_lookup_yellow hideyellow" href='https://dictionary.iucr.org/CIF' onclick="return makeSubWindow("https://dictionary.iucr.org/CIF", 'Navigator')">CIF;</a> and to visualize in detail the structure file via <span class="it"><i>JSmol</i></span> (Hanson <span class="it"><i>et al.</i></span>, 2013<a id="sourceBB20"></a><a href="#BB20"><img class="linkarrow img_align_bottom img_border_0" src="../../../../../../logos/arrows/j_arr.gif" width="17" height="16" alt="[Hanson, R. M., Prilusky, J., Renjian, Z., Nakane, T. & Sussman, J. L. (2013). Isr. J. Chem. 53, 207-216. ]" title="Hanson, R. M., Prilusky, J., Renjian, Z., Nakane, T. & Sussman, J. L. (2013). Isr. J. Chem. 53, 207-216. " /></a>) (see Fig. 5<a href="#FIG5"><img class="linkarrow img_align_bottom img_border_0" src="../../../../../../logos/arrows/j_arr.gif" width="17" height="16" alt="[link]" /></a>).</p><div class="fig"> <table summary="[Figure 4]" cellpadding="5" class="fig" width="100%"> <tbody> <tr> <td class="td_align_center width_20"> <a href="yr5136fig4.html"><img width="100" height="24" src="yr5136fig4thm.gif" class="figlnkthm img_align_middle" alt="[Figure 4]" /> <br /></a> </td> <td> <span class="font_size_3"><b><a href="yr5136fig4.html" id="FIG4">Figure 4</a></b></span> <br /><span class="font_size_2 caption">Reduced representation of an entry that shows relevant metadata (article title, authors, journal reference and DOI) and buttons to access the main view of the entry, to download the uploaded CIF or to visualize it via <span class="it"><i>JSmol</i></span>.</span></td> </tr> </tbody> </table> </div> <div class="fig"> <table summary="[Figure 5]" cellpadding="5" class="fig" width="100%"> <tbody> <tr> <td class="td_align_center width_20"> <a href="yr5136fig5.html"><img width="100" height="131" src="yr5136fig5thm.gif" class="figlnkthm img_align_middle" alt="[Figure 5]" /> <br /></a> </td> <td> <span class="font_size_3"><b><a href="yr5136fig5.html" id="FIG5">Figure 5</a></b></span> <br /><span class="font_size_2 caption">Graphical interface based on <span class="it"><i>JSmol</i></span> (Hanson <span class="it"><i>et al.</i></span>, 2013<a href="#BB20"><img class="linkarrow img_align_bottom img_border_0" src="../../../../../../logos/arrows/j_arr.gif" width="17" height="16" alt="[Hanson, R. M., Prilusky, J., Renjian, Z., Nakane, T. & Sussman, J. L. (2013). Isr. J. Chem. 53, 207-216. ]" title="Hanson, R. M., Prilusky, J., Renjian, Z., Nakane, T. & Sussman, J. L. (2013). Isr. J. Chem. 53, 207-216. " /></a>). This tool interprets the crystallographic information stored in a <a target='Navigator' class="ref_lookup_yellow hideyellow" href='https://dictionary.iucr.org/CIF' onclick="return makeSubWindow("https://dictionary.iucr.org/CIF", 'Navigator')">CIF</a> and allows its interactive visualization (top), including the atomic modulation functions (bottom) of any selected atom.</span></td> </tr> </tbody> </table> </div> <p>When the user clicks on the `View entry' button, the selected information stored in the database is shown in an organized manner. If a <a target='Navigator' class="ref_lookup_yellow hideyellow" href='https://dictionary.iucr.org/CIF' onclick="return makeSubWindow("https://dictionary.iucr.org/CIF", 'Navigator')">CIF</a> contains multiple structures (data blocks), each of them is displayed in a different tab, allowing an easy location of the data associated with each structure. Within each tab, data items are distributed in sections. Each section consists of a title, its position and a set of tag categories that are displayed within it. The description of each item and the data categories included in each displayed section are defined via the administrative site. Thus, the order in which the crystallographic data are displayed is completely determined by the administrators: items will always appear in the same order regardless of the original <a target='Navigator' class="ref_lookup_yellow hideyellow" href='https://dictionary.iucr.org/CIF' onclick="return makeSubWindow("https://dictionary.iucr.org/CIF", 'Navigator')">CIF</a> ordering.</p><p>For the user, this style of presentation has advantages over searching within the original CIFs. On the one hand, <a target='Navigator' class="ref_lookup_yellow hideyellow" href='https://dictionary.iucr.org/CIF' onclick="return makeSubWindow("https://dictionary.iucr.org/CIF", 'Navigator')">CIF</a> data names can be replaced by administrator-defined labels, which can be especially helpful for non-expert users. Moreover, where applicable, numerical data are shown explicitly with their respective units, and each item is accompanied by a link that redirects to its definition at the IUCr website. Looped data are presented in two possible ways. By default, <a target='Navigator' class="ref_lookup_yellow hideyellow" href='https://dictionary.iucr.org/CIF' onclick="return makeSubWindow("https://dictionary.iucr.org/CIF", 'Navigator')">CIF</a> loops are shown in tabular form, with each column headed by a user-friendly title or description. However, some of the looped data can also be displayed in matrix form, and this is also chosen on a case-by-case basis by the administrators.</p></div> <div id="DIVSEC6.1.2" class="sec3"> <h5><a id="SEC6.1.2"></a>6.1.2. Querying the database</h5> <p>The main page has a search form that allows the user to perform complex queries. The simplest form contains three inputs: the first allows the user to choose one of the tags defined as search tags by the administrators (note that the tag is not shown directly by its name, but by the title defined in the administrative site); using the second the user can select one of the operations corresponding to that tag; and, finally, the third is the text input area. The input area allows the user to use the `<img src="teximages/yr5136fi5.svg" alt="[||]" class="img_align_bottom mathimage" style="position: relative; display: inline; padding-top: 0px; padding-bottom: 0px; vertical-align: -2.988792pt;" height="16" width="6" />' operator to perform OR operations: <span class="it"><i>i.e.</i></span> `tP6 <img src="teximages/yr5136fi5.svg" alt="[||]" class="img_align_bottom mathimage" style="position: relative; display: inline; padding-top: 0px; padding-bottom: 0px; vertical-align: -2.988792pt;" height="16" width="6" /> mP12' means `tP6' OR `mP12'.</p><p>Apart from simple queries, more complex searches can be done by adding multiple lines to the search form. Each of those form lines works as explained above, and the queries of each line are combined with an AND operator.</p></div> <div id="DIVSEC6.1.3" class="sec3"> <h5><a id="SEC6.1.3"></a>6.1.3. Graphical representation of the structures</h5> <p>Great effort has been put into the graphical representation of the specific characteristics of modulated structures. Any click over the thumbnail accompanying each entry brings up a <span class="it"><i>JSmol</i></span>-based page, where each structure contained in the uploaded <a target='Navigator' class="ref_lookup_yellow hideyellow" href='https://dictionary.iucr.org/CIF' onclick="return makeSubWindow("https://dictionary.iucr.org/CIF", 'Navigator')">CIF</a> can be examined, including aspects related to modulation (Fig. 5<a href="#FIG5"><img class="linkarrow img_align_bottom img_border_0" src="../../../../../../logos/arrows/j_arr.gif" width="17" height="16" alt="[link]" /></a>).</p></div> </div> <div id="DIVSEC6.2" class="sec2"> <h4><a id="SEC6.2"></a>6.2. The administrative site</h4> <p>The administrative site allows modifications online and in real time, with an impact on the information displayed on the public site, which for the user only requires deleting cache data in the browser and reloading the page. Compared with the base framework, the administrative site of B-IncStrDB has been completed with a small application to create the figures that are shown on the public site and another one to add a header to all the CIFs downloaded from it.</p> <div id="DIVSEC6.2.1" class="sec3"> <h5><a id="SEC6.2.1"></a>6.2.1. Figure generation</h5> <p>As stated before, each entry is accompanied by a figure generated with <span class="it"><i>JSmol</i></span> (Hanson <span class="it"><i>et al.</i></span>, 2013<a href="#BB20"><img class="linkarrow img_align_bottom img_border_0" src="../../../../../../logos/arrows/j_arr.gif" width="17" height="16" alt="[Hanson, R. M., Prilusky, J., Renjian, Z., Nakane, T. & Sussman, J. L. (2013). Isr. J. Chem. 53, 207-216. ]" title="Hanson, R. M., Prilusky, J., Renjian, Z., Nakane, T. & Sussman, J. L. (2013). Isr. J. Chem. 53, 207-216. " /></a>). Those figures can be created through the administrative site once the <a target='Navigator' class="ref_lookup_yellow hideyellow" href='https://dictionary.iucr.org/CIF' onclick="return makeSubWindow("https://dictionary.iucr.org/CIF", 'Navigator')">CIF</a> is uploaded. An embedded <span class="it"><i>JSmol</i></span> application that loads the <a target='Navigator' class="ref_lookup_yellow hideyellow" href='https://dictionary.iucr.org/CIF' onclick="return makeSubWindow("https://dictionary.iucr.org/CIF", 'Navigator')">CIF</a> can be used to directly create and store a figure that represents the most significant characteristics of the structure. Those thumbnails are saved in the <span class="it"><i>JSmol</i></span>-specific PNGJ format. They are compressed files which include a PNG image, together with the <a target='Navigator' class="ref_lookup_yellow hideyellow" href='https://dictionary.iucr.org/CIF' onclick="return makeSubWindow("https://dictionary.iucr.org/CIF", 'Navigator')">CIF</a> and the state of the structural plot (displayed atoms, bonded atoms, polyhedra if present…). This should allow the user to see, as initial model, the same image as appears in the thumbnail. Moreover, PNGJ files can be uploaded via an input form, so figures can be created outside of the web application using <span class="it"><i>Jmol</i></span> or <span class="it"><i>JSmol</i></span>, and then uploaded to the database.</p></div> <div id="DIVSEC6.2.2" class="sec3"> <h5><a id="SEC6.2.2"></a>6.2.2. <a target='Navigator' class="ref_lookup_yellow hideyellow" href='https://dictionary.iucr.org/CIF' onclick="return makeSubWindow("https://dictionary.iucr.org/CIF", 'Navigator')">CIF</a> header</h5> <p>Administrators can also set a multiline string that will be automatically added when a <a target='Navigator' class="ref_lookup_yellow hideyellow" href='https://dictionary.iucr.org/CIF' onclick="return makeSubWindow("https://dictionary.iucr.org/CIF", 'Navigator')">CIF</a> is downloaded from the database. That header can be used to include relevant information: <a target='Navigator' class="ref_lookup_yellow hideyellow" href='https://dictionary.iucr.org/CIF' onclick="return makeSubWindow("https://dictionary.iucr.org/CIF", 'Navigator')">CIF</a> version, the list of dictionaries against which the <a target='Navigator' class="ref_lookup_yellow hideyellow" href='https://dictionary.iucr.org/CIF' onclick="return makeSubWindow("https://dictionary.iucr.org/CIF", 'Navigator')">CIF</a> has been validated and/or from where it was downloaded, for example.</p></div> </div> </div> <div id="DIVSEC7" class="sec1"> <h3><a id="SEC7"></a>7. Conclusions</h3> <p>In the previous sections, a tool has been presented to organize information contained in CIF-like archives in databases, independently of a particular ontology. It only requires the appropriate dictionaries to validate the structure and content of the file. Its design allows great flexibility both to maintain the contents and to vary the type and format of the information presented to users. As an example, the modulated structures database (<a href="https://www.cryst.ehu.eus/bincstrdb/">https://www.cryst.ehu.eus/bincstrdb/</a>, B-IncStrDB) publicly accessible through the Bilbao Crystallographic Server has been presented. At the time of writing this article, the database contains 267 modulated structures (46 of which are composites) that have been, in most cases, manually standardized. All stored CIFs comply with the DDL1 dictionary <span class="ty"><tt>msCIF.dic</tt></span>. The growth of the database is still far from being completely automated. Although the migration of the dictionary from DDL1 to DDLm will mitigate this situation, at least 100 structures, which have been located in different publications, are waiting as they require a complete <a target='Navigator' class="ref_lookup_yellow hideyellow" href='https://dictionary.iucr.org/CIF' onclick="return makeSubWindow("https://dictionary.iucr.org/CIF", 'Navigator')">CIF;</a> this is because, until not many years ago, information stored in <a target='Navigator' class="ref_lookup_yellow hideyellow" href='https://dictionary.iucr.org/CIF' onclick="return makeSubWindow("https://dictionary.iucr.org/CIF", 'Navigator')">CIF</a> format has been reduced to the average structure. On many occasions, the information about modulation appears only in graphic form. A possible cause is that publishers, beyond the IUCr, do not demand it, perhaps in part because the excellent program <span class="it"><i>PLATON</i></span> (Spek, 2003<a href="#BB37"><img class="linkarrow img_align_bottom img_border_0" src="../../../../../../logos/arrows/j_arr.gif" width="17" height="16" alt="[Spek, A. L. (2003). J. Appl. Cryst. 36, 7-13.]" title="Spek, A. L. (2003). J. Appl. Cryst. 36, 7-13." /></a>) does not yet validate CIFs of modulated structures. The B-IncStrDB could be a good opportunity to centralize the particular information on modulated structures, linked to the rest of the open structural databases that currently exist.</p></div> <div id="DIVSEC8" class="sec1"> <h3><a id="SEC8"></a>8. Future work</h3> <p>The framework presented here allows the creation of highly configurable web applications to exploit CIF-based databases. Even though the current implementation has been successfully used to deploy a referential database such as the B-IncStrDB, the framework needs further development to overcome the challenges posed by the migration from DDL1 to DDLm, and to fit other cases. Firstly, the validator, which is one of the key elements of the framework, must be replaced by another software that deals correctly with DDLm dictionaries and with files conforming to the <a target='Navigator' class="ref_lookup_yellow hideyellow" href='https://dictionary.iucr.org/CIF' onclick="return makeSubWindow("https://dictionary.iucr.org/CIF", 'Navigator')">CIF</a> 2.0 syntax standard. Moreover, the proposed tables are flexible enough to store the new elements introduced by the DDLm language, such as arrays and matrices. As the tag definitions given in the dictionaries are directly loaded into the database, minor modifications of the tables would be required to specify the dictionary version, to include the new high-level metadata and even to manage the aliases correctly. Thus, in principle, it should be even possible to have databases with DDL1 and DDLm dictionaries. Secondly, the framework should be adapted to work with more scalable database platforms such as <span class="it"><i>MongoDB</i></span> and <span class="it"><i>MySQL</i></span>. <span class="it"><i>Django</i></span> is compatible with those technologies, but adopting them would require a major refactor of the code. Finally, in order to promote the creation of open databases, the framework should be made open source so that other developers can deploy their own applications and contribute to the community by improving the current framework. In the short term, we intend to extend the framework for allowing validations against DDLm dictionaries and then open it to the public domain.</p></div> </div> <div id="bm"> <div id="ack"> <h3>Acknowledgements</h3><p>The authors would especially like to thank R. Hanson for his kind and quick response to all issues related to graphical representation of modulated structures using <span class="it"><i>JSmol</i></span>.</p></div> <div id="funding"><h3>Funding information</h3><p>This research has been funded by the Basque Government (project IT1458-22). JG-L is indebted to the University of the Basque Country (UPV/EHU) for the grant PIF 21/06. Open access funding provided by University of the Basque Country.</p></div><div id="bibl"> <h3><a id="References"></a>References</h3><p><span class="font_size_3 bb"><a href="#sourceBB1"><img class="bibarrow" alt="First citation" src="../../../../../../logos/arrows/j_uparr.gif" width="13" height="14" title="First citation" /></a><a class="bbanchor" id="BB1"></a>Allen, F. H., Barnard, J. M., Cook, A. P. F. & Hall, S. R. (1995). <span class="it"><i>J. Chem. Inf. Comput. Sci.</i></span> <span class="b"><b>35</b></span>, 412–427. <a class="biblink" href="https://doi.org/10.1021%2Fci00025a009">CrossRef</a> <a class="biblink" href="https://chemport.cas.org/cgi-bin/sdcgi?APP=ftslink&action=reflink&origin=iucr&version=1.0&coi=1:CAS:528:DyaK2MXls1ylurk%3D&pissn=unknown_on_link_creation&pyear=unknown_on_link_creation&md5=7aaeff5392262e5b2ca56f4f3a57d8e6">CAS</a> <a class="biblink" href="https://scripts.iucr.org/cgi-bin/cr.cgi?rm=isi&ut=A1995RA25300009">Web of Science</a> <a class="biblink" href="https://scholar.google.com/scholar?q=Allen%20F.%20H.%2C%20Barnard%20J.%20M.%2C%20Cook%20A.%20P.%20F.%20%26amp%3B%20Hall%20S.%20R.%20%281995%29.%20J.%20Chem.%20Inf.%20Comput.%20Sci.%2035%2C%20412%E2%80%93427.">Google Scholar</a><br /> </span> <span class="font_size_3 bb"><a href="#sourceBB2"><img class="bibarrow" alt="First citation" src="../../../../../../logos/arrows/j_uparr.gif" width="13" height="14" title="First citation" /></a><a class="bbanchor" id="BB2"></a>Allen, F. H., Johnson, O., Shields, G. P., Smith, B. R. & Towler, M. (2004). <span class="it"><i>J. Appl. Cryst.</i></span> <span class="b"><b>37</b></span>, 335–338. <a class="biblink" href="https://scripts.iucr.org/cgi-bin/cr.cgi?rm=isi&ut=000220198900023">Web of Science</a> <a class="biblink" href="https://doi.org/10.1107%2FS0021889804003528">CrossRef</a> <a class="biblink" href="https://chemport.cas.org/cgi-bin/sdcgi?APP=ftslink&action=reflink&origin=iucr&version=1.0&coi=1:CAS:528:DC%2BD2cXitVagtbc%3D&pissn=unknown_on_link_creation&pyear=unknown_on_link_creation&md5=db7022ca53615e73782b15a200f617cd">CAS</a> <a class="biblink" href="https://journals.iucr.org/paper?he5290">IUCr Journals</a> <a class="biblink" href="https://scholar.google.com/scholar?q=Allen%20F.%20H.%2C%20Johnson%20O.%2C%20Shields%20G.%20P.%2C%20Smith%20B.%20R.%20%26amp%3B%20Towler%20M.%20%282004%29.%20J.%20Appl.%20Cryst.%2037%2C%20335%E2%80%93338.">Google Scholar</a><br /> </span> <span class="font_size_3 bb"><a href="#sourceBB3"><img class="bibarrow" alt="First citation" src="../../../../../../logos/arrows/j_uparr.gif" width="13" height="14" title="First citation" /></a><a class="bbanchor" id="BB3"></a>Aroyo, M. I., Perez-Mato, J. M., Capillas, C., Kroumova, E., Ivantchev, S., Madariaga, G., Kirov, A. & Wondratschek, H. (2006). <span class="it"><i>Z. Kristallogr. Cryst. Mater.</i></span> <span class="b"><b>221</b></span>, 15–27. <a class="biblink" href="https://scripts.iucr.org/cgi-bin/cr.cgi?rm=isi&ut=000233905900004">Web of Science</a> <a class="biblink" href="https://doi.org/10.1524%2Fzkri.2006.221.1.15">CrossRef</a> <a class="biblink" href="https://chemport.cas.org/cgi-bin/sdcgi?APP=ftslink&action=reflink&origin=iucr&version=1.0&coi=1:CAS:528:DC%2BD28XmtFWnuw%3D%3D&pissn=unknown_on_link_creation&pyear=unknown_on_link_creation&md5=77bf9b0ae17ce516b0fbcbcb4108953b">CAS</a> <a class="biblink" href="https://scholar.google.com/scholar?q=Aroyo%20M.%20I.%2C%20Perez-Mato%20J.%20M.%2C%20Capillas%20C.%2C%20Kroumova%20E.%2C%20Ivantchev%20S.%2C%20Madariaga%20G.%2C%20Kirov%20A.%20%26amp%3B%20Wondratschek%20H.%20%282006%29.%20Z.%20Kristallogr.%20Cryst.%20Mater.%20221%2C%2015%E2%80%9327.">Google Scholar</a><br /> </span> <span class="font_size_3 bb"><a href="#sourceBB4"><img class="bibarrow" alt="First citation" src="../../../../../../logos/arrows/j_uparr.gif" width="13" height="14" title="First citation" /></a><a class="bbanchor" id="BB4"></a>Berman, H., Bernstein, H., Ellis, P., Feng, Z., Hall, S., Hoyland, M., McMahon, B., Spadaccini, N., Strickland, P., Westbrook, J. & Yang, H. (2006). <span class="it"><i>International Tables for Crystallography</i></span>, Vol. G, ch. 5, pp. 481–568. Chester: IUCr <a class="biblink" href="https://scholar.google.com/scholar?q=Berman%2C%20H.%2C%20Bernstein%2C%20H.%2C%20Ellis%2C%20P.%2C%20Feng%2C%20Z.%2C%20Hall%2C%20S.%2C%20Hoyland%2C%20M.%2C%20McMahon%2C%20B.%2C%20Spadaccini%2C%20N.%2C%20Strickland%2C%20P.%2C%20Westbrook%2C%20J.%20%26amp%3B%20Yang%2C%20H.%20%282006%29.%20International%20Tables%20for%20Crystallography%2C%20Vol.%20G%2C%20ch.%205%2C%20pp.%20481-568.%20Chester%3A%20IUCr">Google Scholar</a><br /> </span> <span class="font_size_3 bb"><a href="#sourceBB5"><img class="bibarrow" alt="First citation" src="../../../../../../logos/arrows/j_uparr.gif" width="13" height="14" title="First citation" /></a><a class="bbanchor" id="BB5"></a>Bernstein, F. C., Koetzle, T. F., Williams, G. J. B., Meyer, E. F. Jr, Brice, M. D., Rodgers, J. R., Kennard, O., Shimanouchi, T. & Tasumi, M. (1977). <span class="it"><i>Eur. J. Biochem.</i></span> <span class="b"><b>80</b></span>, 319–324. . <a class="biblink" href="https://doi.org/10.1111%2Fj.1432-1033.1977.tb11885.x">CrossRef</a> <a class="biblink" href="https://chemport.cas.org/cgi-bin/sdcgi?APP=ftslink&action=reflink&origin=iucr&version=1.0&coi=1:CAS:528:DyaE1cXhslKkug%3D%3D&pissn=unknown_on_link_creation&pyear=unknown_on_link_creation&md5=20e6d096394f31955e3d9ba8fe0b0ec0">CAS</a> <a class="biblink" href="https://scripts.iucr.org/cgi-bin/cr.cgi?rm=pmed&pmid=923582">PubMed</a> <a class="biblink" href="https://scripts.iucr.org/cgi-bin/cr.cgi?rm=isi&ut=A1977EB89500001">Web of Science</a> <a class="biblink" href="https://scholar.google.com/scholar?q=Bernstein%20F.%20C.%2C%20Koetzle%20T.%20F.%2C%20Williams%20G.%20J.%20B.%2C%20Meyer%20E.%20F.%20Jr%2C%20Brice%20M.%20D.%2C%20Rodgers%20J.%20R.%2C%20Kennard%20O.%2C%20Shimanouchi%20T.%20%26amp%3B%20Tasumi%20M.%20%281977%29.%20Eur.%20J.%20Biochem.%2080%2C%20319%E2%80%93324.">Google Scholar</a><br /> </span> <span class="font_size_3 bb"><a href="#sourceBB6"><img class="bibarrow" alt="First citation" src="../../../../../../logos/arrows/j_uparr.gif" width="13" height="14" title="First citation" /></a><a class="bbanchor" id="BB6"></a>Bernstein, H. J. & Hammersley, A. P. (2006). <span class="it"><i>International Tables for Crystallography</i></span>, Vol. G, ch. 2.3, pp. 37–43. Chester: IUCr. <a class="biblink" href="https://scholar.google.com/scholar?q=Bernstein%2C%20H.%20J.%20%26amp%3B%20Hammersley%2C%20A.%20P.%20%282006%29.%20International%20Tables%20for%20Crystallography%2C%20Vol.%20G%2C%20ch.%202.3%2C%20pp.%2037-43.%20Chester%3A%20IUCr.">Google Scholar</a><br /> </span> <span class="font_size_3 bb"><a href="#sourceBB7"><img class="bibarrow" alt="First citation" src="../../../../../../logos/arrows/j_uparr.gif" width="13" height="14" title="First citation" /></a><a class="bbanchor" id="BB7"></a>Blatov, V. A., Hanson, R. M. & Proserpio, D. M. (2021). <span class="it"><i>Topology CIF Dictionary</i></span>, <a href="https://www.iucr.org/__data/iucr/cif/dictionaries/cif_topology_0.9.6.dic.pdf">https://www.iucr.org/__data/iucr/cif/dictionaries/cif_topology_0.9.6.dic.pdf</a>. <a class="biblink" href="https://scholar.google.com/scholar?q=Blatov%2C%20V.%20A.%2C%20Hanson%2C%20R.%20M.%20%26amp%3B%20Proserpio%2C%20D.%20M.%20%282021%29.%20Topology%20CIF%20Dictionary%2C%20https%3A%2F%2Fwww.iucr.org%2F__data%2Fiucr%2Fcif%2Fdictionaries%2Fcif_topology_0.9.6.dic.pdf.">Google Scholar</a><br /> </span> <span class="font_size_3 bb"><a href="#sourceBB8"><img class="bibarrow" alt="First citation" src="../../../../../../logos/arrows/j_uparr.gif" width="13" height="14" title="First citation" /></a><a class="bbanchor" id="BB8"></a>Brown, I. D. (1983). <span class="it"><i>Acta Cryst.</i></span> A<span class="b"><b>39</b></span>, 216–224. <a class="biblink" href="https://doi.org/10.1107%2FS0108767383000495">CrossRef</a> <a class="biblink" href="https://chemport.cas.org/cgi-bin/sdcgi?APP=ftslink&action=reflink&origin=iucr&version=1.0&coi=1:CAS:528:DyaL3sXhsFeju7w%3D&pissn=unknown_on_link_creation&pyear=unknown_on_link_creation&md5=0b13d0e59b4c9e38c4ec0b7664a61719">CAS</a> <a class="biblink" href="https://scripts.iucr.org/cgi-bin/cr.cgi?rm=isi&ut=A1983QH39700007">Web of Science</a> <a class="biblink" href="https://journals.iucr.org/paper?a21920">IUCr Journals</a> <a class="biblink" href="https://scholar.google.com/scholar?q=Brown%20I.%20D.%20%281983%29.%20Acta%20Cryst.%20A39%2C%20216%E2%80%93224.">Google Scholar</a><br /> </span> <span class="font_size_3 bb"><a href="#sourceBB9"><img class="bibarrow" alt="First citation" src="../../../../../../logos/arrows/j_uparr.gif" width="13" height="14" title="First citation" /></a><a class="bbanchor" id="BB9"></a>Chapuis, G., Farkas-Jahnke, M., Pérez-Mato, J. M., Senechal, M., Steurer, W., Janot, C., Pandey, D. & Yamamoto, A. (1997). <span class="it"><i>Acta Cryst.</i></span> A<span class="b"><b>53</b></span>, 95–100. <a class="biblink" href="https://doi.org/10.1107%2FS0108767396010185">CrossRef</a> <a class="biblink" href="https://chemport.cas.org/cgi-bin/sdcgi?APP=ftslink&action=reflink&origin=iucr&version=1.0&coi=1:CAS:528:DyaK2sXhtFCit7w%3D&pissn=unknown_on_link_creation&pyear=unknown_on_link_creation&md5=7e795bce49b3a876f0ed57ed5e5d2cb8">CAS</a> <a class="biblink" href="https://scripts.iucr.org/cgi-bin/cr.cgi?rm=isi&ut=A1997WG94600010">Web of Science</a> <a class="biblink" href="https://journals.iucr.org/paper?es0241">IUCr Journals</a> <a class="biblink" href="https://scholar.google.com/scholar?q=Chapuis%20G.%2C%20Farkas-Jahnke%20M.%2C%20P%C3%A9rez-Mato%20J.%20M.%2C%20Senechal%20M.%2C%20Steurer%20W.%2C%20Janot%20C.%2C%20Pandey%20D.%20%26amp%3B%20Yamamoto%20A.%20%281997%29.%20Acta%20Cryst.%20A53%2C%2095%E2%80%93100.">Google Scholar</a><br /> </span> <span class="font_size_3 bb"><a href="#sourceBB10"><img class="bibarrow" alt="First citation" src="../../../../../../logos/arrows/j_uparr.gif" width="13" height="14" title="First citation" /></a><a class="bbanchor" id="BB10"></a>Crennell, K. M. & Brown, I. D. (1985). <span class="it"><i>J. Mol. Graph.</i></span> <span class="b"><b>3</b></span>, 40–49. <a class="biblink" href="https://scholar.google.com/scholar?q=Crennell%20K.%20M.%20%26amp%3B%20Brown%20I.%20D.%20%281985%29.%20J.%20Mol.%20Graph.%203%2C%2040%E2%80%9349.">Google Scholar</a><br /> </span> <span class="font_size_3 bb"><a href="#sourceBB11"><img class="bibarrow" alt="First citation" src="../../../../../../logos/arrows/j_uparr.gif" width="13" height="14" title="First citation" /></a><a class="bbanchor" id="BB11"></a>Django Software Foundation (2019). <span class="it"><i>Django</i></span>, <a href="https://djangoproject.com">https://djangoproject.com</a>. <a class="biblink" href="https://scholar.google.com/scholar?q=Django%20Software%20Foundation%20%282019%29.%20Django%2C%20https%3A%2F%2Fdjangoproject.com.">Google Scholar</a><br /> </span> <span class="font_size_3 bb"><a href="#sourceBB12"><img class="bibarrow" alt="First citation" src="../../../../../../logos/arrows/j_uparr.gif" width="13" height="14" title="First citation" /></a><a class="bbanchor" id="BB12"></a>Fire, M. & Guestrin, C. (2019). <span class="it"><i>GigaScience</i></span>, <span class="b"><b>8</b></span>, giz053. <a class="biblink" href="https://scripts.iucr.org/cgi-bin/cr.cgi?rm=isi&ut=000475755000004">Web of Science</a> <a class="biblink" href="https://doi.org/10.1093%2Fgigascience%2Fgiz053">CrossRef</a> <a class="biblink" href="https://scripts.iucr.org/cgi-bin/cr.cgi?rm=pmed&pmid=31144712">PubMed</a> <a class="biblink" href="https://scholar.google.com/scholar?q=Fire%20M.%20%26amp%3B%20Guestrin%20C.%20%282019%29.%20GigaScience%2C%208%2C%20giz053.">Google Scholar</a><br /> </span> <span class="font_size_3 bb"><a href="#sourceBB13"><img class="bibarrow" alt="First citation" src="../../../../../../logos/arrows/j_uparr.gif" width="13" height="14" title="First citation" /></a><a class="bbanchor" id="BB13"></a>Gallego, S. V., Perez-Mato, J. M., Elcoro, L., Tasci, E. S., Hanson, R. M., Aroyo, M. I. & Madariaga, G. (2016<span class="it"><i>a</i></span>). <span class="it"><i>J. Appl. Cryst.</i></span> <span class="b"><b>49</b></span>, 1941–1956. <a class="biblink" href="https://scripts.iucr.org/cgi-bin/cr.cgi?rm=isi&ut=000391195900009">Web of Science</a> <a class="biblink" href="https://doi.org/10.1107%2FS1600576716015491">CrossRef</a> <a class="biblink" href="https://chemport.cas.org/cgi-bin/sdcgi?APP=ftslink&action=reflink&origin=iucr&version=1.0&coi=1:CAS:528:DC%2BC28XitVSqsr%2FP&pissn=unknown_on_link_creation&pyear=unknown_on_link_creation&md5=07a27ed5c20b496b449225b853681ecc">CAS</a> <a class="biblink" href="https://journals.iucr.org/paper?ks5530">IUCr Journals</a> <a class="biblink" href="https://scholar.google.com/scholar?q=Gallego%20S.%20V.%2C%20Perez-Mato%20J.%20M.%2C%20Elcoro%20L.%2C%20Tasci%20E.%20S.%2C%20Hanson%20R.%20M.%2C%20Aroyo%20M.%20I.%20%26amp%3B%20Madariaga%20G.%20%282016a%29.%20J.%20Appl.%20Cryst.%2049%2C%201941%E2%80%931956.">Google Scholar</a><br /> </span> <span class="font_size_3 bb"><a href="#sourceBB14"><img class="bibarrow" alt="First citation" src="../../../../../../logos/arrows/j_uparr.gif" width="13" height="14" title="First citation" /></a><a class="bbanchor" id="BB14"></a>Gallego, S. V., Perez-Mato, J. M., Elcoro, L., Tasci, E. S., Hanson, R. M., Momma, K., Aroyo, M. I. & Madariaga, G. (2016<span class="it"><i>b</i></span>). <span class="it"><i>J. Appl. Cryst.</i></span> <span class="b"><b>49</b></span>, 1750–1776. <a class="biblink" href="https://scripts.iucr.org/cgi-bin/cr.cgi?rm=isi&ut=000388354800040">Web of Science</a> <a class="biblink" href="https://doi.org/10.1107%2FS1600576716012863">CrossRef</a> <a class="biblink" href="https://chemport.cas.org/cgi-bin/sdcgi?APP=ftslink&action=reflink&origin=iucr&version=1.0&coi=1:CAS:528:DC%2BC28Xhs1Wqur3E&pissn=unknown_on_link_creation&pyear=unknown_on_link_creation&md5=e51dfd85f794ea249bacf3af96929e91">CAS</a> <a class="biblink" href="https://journals.iucr.org/paper?ks5532">IUCr Journals</a> <a class="biblink" href="https://scholar.google.com/scholar?q=Gallego%20S.%20V.%2C%20Perez-Mato%20J.%20M.%2C%20Elcoro%20L.%2C%20Tasci%20E.%20S.%2C%20Hanson%20R.%20M.%2C%20Momma%20K.%2C%20Aroyo%20M.%20I.%20%26amp%3B%20Madariaga%20G.%20%282016b%29.%20J.%20Appl.%20Cryst.%2049%2C%201750%E2%80%931776.">Google Scholar</a><br /> </span> <span class="font_size_3 bb"><a href="#sourceBB15"><img class="bibarrow" alt="First citation" src="../../../../../../logos/arrows/j_uparr.gif" width="13" height="14" title="First citation" /></a><a class="bbanchor" id="BB15"></a>Gildea, R. J., Bourhis, L. J., Dolomanov, O. V., Grosse-Kunstleve, R. W., Puschmann, H., Adams, P. D. & Howard, J. A. K. (2011). <span class="it"><i>J. Appl. Cryst.</i></span> <span class="b"><b>44</b></span>, 1259–1263. <a class="biblink" href="https://scripts.iucr.org/cgi-bin/cr.cgi?rm=isi&ut=000297279800018">Web of Science</a> <a class="biblink" href="https://doi.org/10.1107%2FS0021889811041161">CrossRef</a> <a class="biblink" href="https://chemport.cas.org/cgi-bin/sdcgi?APP=ftslink&action=reflink&origin=iucr&version=1.0&coi=1:CAS:528:DC%2BC3MXhsFSisrvL&pissn=unknown_on_link_creation&pyear=unknown_on_link_creation&md5=71218dabf2163fe8ab59e2056f893d42">CAS</a> <a class="biblink" href="https://journals.iucr.org/paper?hx5135">IUCr Journals</a> <a class="biblink" href="https://scholar.google.com/scholar?q=Gildea%20R.%20J.%2C%20Bourhis%20L.%20J.%2C%20Dolomanov%20O.%20V.%2C%20Grosse-Kunstleve%20R.%20W.%2C%20Puschmann%20H.%2C%20Adams%20P.%20D.%20%26amp%3B%20Howard%20J.%20A.%20K.%20%282011%29.%20J.%20Appl.%20Cryst.%2044%2C%201259%E2%80%931263.">Google Scholar</a><br /> </span> <span class="font_size_3 bb"><a href="#sourceBB16"><img class="bibarrow" alt="First citation" src="../../../../../../logos/arrows/j_uparr.gif" width="13" height="14" title="First citation" /></a><a class="bbanchor" id="BB16"></a>Gražulis, S., Chateigner, D., Downs, R. T., Yokochi, A. F. T., Quirós, M., Lutterotti, L., Manakova, E., Butkus, J., Moeck, P. & Le Bail, A. (2009). <span class="it"><i>J. Appl. Cryst.</i></span> <span class="b"><b>42</b></span>, 726–729. <a class="biblink" href="https://scripts.iucr.org/cgi-bin/cr.cgi?rm=isi&ut=000268068000022">Web of Science</a> <a class="biblink" href="https://doi.org/10.1107%2FS0021889809016690">CrossRef</a> <a class="biblink" href="https://journals.iucr.org/paper?kk5039">IUCr Journals</a> <a class="biblink" href="https://scholar.google.com/scholar?q=Gra%C5%BEulis%20S.%2C%20Chateigner%20D.%2C%20Downs%20R.%20T.%2C%20Yokochi%20A.%20F.%20T.%2C%20Quir%C3%B3s%20M.%2C%20Lutterotti%20L.%2C%20Manakova%20E.%2C%20Butkus%20J.%2C%20Moeck%20P.%20%26amp%3B%20Le%20Bail%20A.%20%282009%29.%20J.%20Appl.%20Cryst.%2042%2C%20726%E2%80%93729.">Google Scholar</a><br /> </span> <span class="font_size_3 bb"><a href="#sourceBB17"><img class="bibarrow" alt="First citation" src="../../../../../../logos/arrows/j_uparr.gif" width="13" height="14" title="First citation" /></a><a class="bbanchor" id="BB17"></a>Grosse-Kunstleve, R. W., Sauter, N. K., Moriarty, N. W. & Adams, P. D. (2002). <span class="it"><i>J. Appl. Cryst.</i></span> <span class="b"><b>35</b></span>, 126–136. <a class="biblink" href="https://scripts.iucr.org/cgi-bin/cr.cgi?rm=isi&ut=000173441000021">Web of Science</a> <a class="biblink" href="https://doi.org/10.1107%2FS0021889801017824">CrossRef</a> <a class="biblink" href="https://chemport.cas.org/cgi-bin/sdcgi?APP=ftslink&action=reflink&origin=iucr&version=1.0&coi=1:CAS:528:DC%2BD38XltVajug%3D%3D&pissn=unknown_on_link_creation&pyear=unknown_on_link_creation&md5=793e8b351c5be0f2c1d0a4d67169397f">CAS</a> <a class="biblink" href="https://journals.iucr.org/paper?ks0118">IUCr Journals</a> <a class="biblink" href="https://scholar.google.com/scholar?q=Grosse-Kunstleve%20R.%20W.%2C%20Sauter%20N.%20K.%2C%20Moriarty%20N.%20W.%20%26amp%3B%20Adams%20P.%20D.%20%282002%29.%20J.%20Appl.%20Cryst.%2035%2C%20126%E2%80%93136.">Google Scholar</a><br /> </span> <span class="font_size_3 bb"><a href="#sourceBB19"><img class="bibarrow" alt="First citation" src="../../../../../../logos/arrows/j_uparr.gif" width="13" height="14" title="First citation" /></a><a class="bbanchor" id="BB19"></a>Hall, S. R., Allen, F. H. & Brown, I. D. (1991). <span class="it"><i>Acta Cryst.</i></span> A<span class="b"><b>47</b></span>, 655–685. <a class="biblink" href="https://doi.org/10.1107%2FS010876739101067X">CrossRef</a> <a class="biblink" href="https://chemport.cas.org/cgi-bin/sdcgi?APP=ftslink&action=reflink&origin=iucr&version=1.0&coi=1:CAS:528:DyaK3MXmvFWksrg%3D&pissn=unknown_on_link_creation&pyear=unknown_on_link_creation&md5=b6c633b06beeefa6b82f9ea0774b0a8a">CAS</a> <a class="biblink" href="https://scripts.iucr.org/cgi-bin/cr.cgi?rm=isi&ut=A1991GR13500004">Web of Science</a> <a class="biblink" href="https://journals.iucr.org/paper?es0164">IUCr Journals</a> <a class="biblink" href="https://scholar.google.com/scholar?q=Hall%20S.%20R.%2C%20Allen%20F.%20H.%20%26amp%3B%20Brown%20I.%20D.%20%281991%29.%20Acta%20Cryst.%20A47%2C%20655%E2%80%93685.">Google Scholar</a><br /> </span> <span class="font_size_3 bb"><a href="#sourceBB18"><img class="bibarrow" alt="First citation" src="../../../../../../logos/arrows/j_uparr.gif" width="13" height="14" title="First citation" /></a><a class="bbanchor" id="BB18"></a>Hall, S. R. & Cook, A. P. F. (2006). <span class="it"><i>International Tables for Crystallography</i></span>, Vol. G, ch. 2.5, pp. 53–60. Chester: IUCr. <a class="biblink" href="https://scholar.google.com/scholar?q=Hall%2C%20S.%20R.%20%26amp%3B%20Cook%2C%20A.%20P.%20F.%20%282006%29.%20International%20Tables%20for%20Crystallography%2C%20Vol.%20G%2C%20ch.%202.5%2C%20pp.%2053-60.%20Chester%3A%20IUCr.">Google Scholar</a><br /> </span> <span class="font_size_3 bb"><a href="#sourceBB23"><img class="bibarrow" alt="First citation" src="../../../../../../logos/arrows/j_uparr.gif" width="13" height="14" title="First citation" /></a><a class="bbanchor" id="BB23"></a>Hall, S. R. & McMahon, B. (2006). Editors. <span class="it"><i>International Tables for Crystallography</i></span>, Vol. G, <span class="it"><i>Definition and Exchange of Crystallographic Data</i></span>. Chester: IUCr. <a class="biblink" href="https://scholar.google.com/scholar?q=Hall%2C%20S.%20R.%20%26amp%3B%20McMahon%2C%20B.%20%282006%29.%20Editors.%20International%20Tables%20for%20Crystallography%2C%20Vol.%20G%2C%20Definition%20and%20Exchange%20of%20Crystallographic%20Data.%20Chester%3A%20IUCr.">Google Scholar</a><br /> </span> <span class="font_size_3 bb"><a href="#sourceBB20"><img class="bibarrow" alt="First citation" src="../../../../../../logos/arrows/j_uparr.gif" width="13" height="14" title="First citation" /></a><a class="bbanchor" id="BB20"></a>Hanson, R. M., Prilusky, J., Renjian, Z., Nakane, T. & Sussman, J. L. (2013). <span class="it"><i>Isr. J. Chem.</i></span> <span class="b"><b>53</b></span>, 207–216. <a class="biblink" href="https://scripts.iucr.org/cgi-bin/cr.cgi?rm=isi&ut=000317859800011">Web of Science</a> <a class="biblink" href="https://doi.org/10.1002%2Fijch.201300024">CrossRef</a> <a class="biblink" href="https://chemport.cas.org/cgi-bin/sdcgi?APP=ftslink&action=reflink&origin=iucr&version=1.0&coi=1:CAS:528:DC%2BC3sXlvFWqsb0%3D&pissn=unknown_on_link_creation&pyear=unknown_on_link_creation&md5=4acba807d113c03aee6b739235ef6c00">CAS</a> <a class="biblink" href="https://scholar.google.com/scholar?q=Hanson%20R.%20M.%2C%20Prilusky%20J.%2C%20Renjian%20Z.%2C%20Nakane%20T.%20%26amp%3B%20Sussman%20J.%20L.%20%282013%29.%20Isr.%20J.%20Chem.%2053%2C%20207%E2%80%93216.">Google Scholar</a><br /> </span> <span class="font_size_3 bb"><a href="#sourceBB21"><img class="bibarrow" alt="First citation" src="../../../../../../logos/arrows/j_uparr.gif" width="13" height="14" title="First citation" /></a><a class="bbanchor" id="BB21"></a>Hester, J. R. (2006). <span class="it"><i>J. Appl. Cryst.</i></span> <span class="b"><b>39</b></span>, 621–625. <a class="biblink" href="https://scripts.iucr.org/cgi-bin/cr.cgi?rm=isi&ut=000239147800024">Web of Science</a> <a class="biblink" href="https://doi.org/10.1107%2FS0021889806015627">CrossRef</a> <a class="biblink" href="https://chemport.cas.org/cgi-bin/sdcgi?APP=ftslink&action=reflink&origin=iucr&version=1.0&coi=1:CAS:528:DC%2BD28XntFGltL0%3D&pissn=unknown_on_link_creation&pyear=unknown_on_link_creation&md5=ecd53f400e4d25576caefe9172a93bec">CAS</a> <a class="biblink" href="https://journals.iucr.org/paper?wf5020">IUCr Journals</a> <a class="biblink" href="https://scholar.google.com/scholar?q=Hester%20J.%20R.%20%282006%29.%20J.%20Appl.%20Cryst.%2039%2C%20621%E2%80%93625.">Google Scholar</a><br /> </span> <span class="font_size_3 bb"><a href="#sourceBB22"><img class="bibarrow" alt="First citation" src="../../../../../../logos/arrows/j_uparr.gif" width="13" height="14" title="First citation" /></a><a class="bbanchor" id="BB22"></a>Hipp, R. D. (2020). <span class="it"><i>SQLite</i></span>, <a href="https://www.sqlite.org/index.html">https://www.sqlite.org/index.html</a>. <a class="biblink" href="https://scholar.google.com/scholar?q=Hipp%2C%20R.%20D.%20%282020%29.%20SQLite%2C%20https%3A%2F%2Fwww.sqlite.org%2Findex.html.">Google Scholar</a><br /> </span> <span class="font_size_3 bb"><a href="#sourceBB26"><img class="bibarrow" alt="First citation" src="../../../../../../logos/arrows/j_uparr.gif" width="13" height="14" title="First citation" /></a><a class="bbanchor" id="BB26"></a>Madariaga, G. (2006). <span class="it"><i>International Tables for Crystallography</i></span>, Vol. G, ch. 4.3, pp. 270–289. Chester: IUCr. <a class="biblink" href="https://scholar.google.com/scholar?q=Madariaga%2C%20G.%20%282006%29.%20International%20Tables%20for%20Crystallography%2C%20Vol.%20G%2C%20ch.%204.3%2C%20pp.%20270-289.%20Chester%3A%20IUCr.">Google Scholar</a><br /> </span> <span class="font_size_3 bb"><a href="#sourceBB28"><img class="bibarrow" alt="First citation" src="../../../../../../logos/arrows/j_uparr.gif" width="13" height="14" title="First citation" /></a><a class="bbanchor" id="BB28"></a>McMahon, B. (1998). <span class="it"><i>VCIF: a Utility to Validate the Syntax of a Crystallographic Information File</i></span>, <a href="https://www.iucr.org/iucr-top/cif/software/vcif/index.html">https://www.iucr.org/iucr-top/cif/software/vcif/index.html</a>. <a class="biblink" href="https://scholar.google.com/scholar?q=McMahon%2C%20B.%20%281998%29.%20VCIF%3A%20a%20Utility%20to%20Validate%20the%20Syntax%20of%20a%20Crystallographic%20Information%20File%2C%20https%3A%2F%2Fwww.iucr.org%2Fiucr-top%2Fcif%2Fsoftware%2Fvcif%2Findex.html.">Google Scholar</a><br /> </span> <span class="font_size_3 bb"><a href="#sourceBB29"><img class="bibarrow" alt="First citation" src="../../../../../../logos/arrows/j_uparr.gif" width="13" height="14" title="First citation" /></a><a class="bbanchor" id="BB29"></a>McMahon, B. (2006<span class="it"><i>a</i></span>). <span class="it"><i>International Tables for Crystallography</i></span>, Vol. G, ch. 3.1, pp. 88–89. Chester: IUCr. <a class="biblink" href="https://scholar.google.com/scholar?q=McMahon%2C%20B.%20%282006a%29.%20International%20Tables%20for%20Crystallography%2C%20Vol.%20G%2C%20ch.%203.1%2C%20pp.%2088-89.%20Chester%3A%20IUCr.">Google Scholar</a><br /> </span> <span class="font_size_3 bb"><a href="#sourceBB30"><img class="bibarrow" alt="First citation" src="../../../../../../logos/arrows/j_uparr.gif" width="13" height="14" title="First citation" /></a><a class="bbanchor" id="BB30"></a>McMahon, B. (2006<span class="it"><i>b</i></span>). <span class="it"><i>International Tables for Crystallography</i></span>, Vol. G, ch. 5.3, pp. 499–525. Chester: IUCr. <a class="biblink" href="https://scholar.google.com/scholar?q=McMahon%2C%20B.%20%282006b%29.%20International%20Tables%20for%20Crystallography%2C%20Vol.%20G%2C%20ch.%205.3%2C%20pp.%20499-525.%20Chester%3A%20IUCr.">Google Scholar</a><br /> </span> <span class="font_size_3 bb"><a href="#sourceBB31"><img class="bibarrow" alt="First citation" src="../../../../../../logos/arrows/j_uparr.gif" width="13" height="14" title="First citation" /></a><a class="bbanchor" id="BB31"></a>Merkys, A., Vaitkus, A., Butkus, J., Okulič-Kazarinas, M., Kairys, V. & Gražulis, S. (2016). <span class="it"><i>J. Appl. Cryst.</i></span> <span class="b"><b>49</b></span>, 292–301. <a class="biblink" href="https://scripts.iucr.org/cgi-bin/cr.cgi?rm=isi&ut=000369389300033">Web of Science</a> <a class="biblink" href="https://doi.org/10.1107%2FS1600576715022396">CrossRef</a> <a class="biblink" href="https://chemport.cas.org/cgi-bin/sdcgi?APP=ftslink&action=reflink&origin=iucr&version=1.0&coi=1:CAS:528:DC%2BC28XhvVKqtrg%3D&pissn=unknown_on_link_creation&pyear=unknown_on_link_creation&md5=dce12bcb5eeed0b46a7cf8a4012567f9">CAS</a> <a class="biblink" href="https://journals.iucr.org/paper?po5052">IUCr Journals</a> <a class="biblink" href="https://scholar.google.com/scholar?q=Merkys%20A.%2C%20Vaitkus%20A.%2C%20Butkus%20J.%2C%20Okuli%C4%8D-Kazarinas%20M.%2C%20Kairys%20V.%20%26amp%3B%20Gra%C5%BEulis%20S.%20%282016%29.%20J.%20Appl.%20Cryst.%2049%2C%20292%E2%80%93301.">Google Scholar</a><br /> </span> <span class="font_size_3 bb"><a href="#sourceBB32"><img class="bibarrow" alt="First citation" src="../../../../../../logos/arrows/j_uparr.gif" width="13" height="14" title="First citation" /></a><a class="bbanchor" id="BB32"></a>Petříček, V., Dušek, M. & Palatinus, L. (2014). <span class="it"><i>Z. Kristallogr. Cryst. Mater.</i></span> <span class="b"><b>229</b></span>, 345–352. <a class="biblink" href="https://scholar.google.com/scholar?q=Pet%C5%99%C3%AD%C4%8Dek%20V.%2C%20Du%C5%A1ek%20M.%20%26amp%3B%20Palatinus%20L.%20%282014%29.%20Z.%20Kristallogr.%20Cryst.%20Mater.%20229%2C%20345%E2%80%93352.">Google Scholar</a><br /> </span> <span class="font_size_3 bb"><a href="#sourceBB33"><img class="bibarrow" alt="First citation" src="../../../../../../logos/arrows/j_uparr.gif" width="13" height="14" title="First citation" /></a><a class="bbanchor" id="BB33"></a>Petříček, V., Palatinus, L., Plášil, J. & Dušek, M. (2023). <span class="it"><i>Z. Kristallogr. Cryst. Mater.</i></span> <span class="b"><b>238</b></span>, 271–282. <a class="biblink" href="https://scholar.google.com/scholar?q=Pet%C5%99%C3%AD%C4%8Dek%20V.%2C%20Palatinus%20L.%2C%20Pl%C3%A1%C5%A1il%20J.%20%26amp%3B%20Du%C5%A1ek%20M.%20%282023%29.%20Z.%20Kristallogr.%20Cryst.%20Mater.%20238%2C%20271%E2%80%93282.">Google Scholar</a><br /> </span> <span class="font_size_3 bb"><a href="#sourceBB34"><img class="bibarrow" alt="First citation" src="../../../../../../logos/arrows/j_uparr.gif" width="13" height="14" title="First citation" /></a><a class="bbanchor" id="BB34"></a>Ren, Y., Baas, J., Meetsma, A., de Boer, J. L. & Wiegers, G. A. (1996). <span class="it"><i>Acta Cryst.</i></span> B<span class="b"><b>52</b></span>, 398–405. <a class="biblink" href="https://doi.org/10.1107%2FS0108768195010536">CrossRef</a> <a class="biblink" href="https://chemport.cas.org/cgi-bin/sdcgi?APP=ftslink&action=reflink&origin=iucr&version=1.0&coi=1:CAS:528:DyaK28XjslSjtbo%3D&pissn=unknown_on_link_creation&pyear=unknown_on_link_creation&md5=254bfd8f81b18973e81ec4d4982f909c">CAS</a> <a class="biblink" href="https://scripts.iucr.org/cgi-bin/cr.cgi?rm=isi&ut=A1996UU07400002">Web of Science</a> <a class="biblink" href="https://journals.iucr.org/paper?js0018">IUCr Journals</a> <a class="biblink" href="https://scholar.google.com/scholar?q=Ren%20Y.%2C%20Baas%20J.%2C%20Meetsma%20A.%2C%20de%20Boer%20J.%20L.%20%26amp%3B%20Wiegers%20G.%20A.%20%281996%29.%20Acta%20Cryst.%20B52%2C%20398%E2%80%93405.">Google Scholar</a><br /> </span> <span class="font_size_3 bb"><a href="#sourceBB35"><img class="bibarrow" alt="First citation" src="../../../../../../logos/arrows/j_uparr.gif" width="13" height="14" title="First citation" /></a><a class="bbanchor" id="BB35"></a>Smaalen, S. van (1991). <span class="it"><i>Phys. Rev. B</i></span>, <span class="b"><b>43</b></span>, 11330–11341. <a class="biblink" href="https://doi.org/10.1103%2FPhysRevB.43.11330">CrossRef</a> <a class="biblink" href="https://scripts.iucr.org/cgi-bin/cr.cgi?rm=isi&ut=A1991FL04100060">Web of Science</a> <a class="biblink" href="https://scholar.google.com/scholar?q=Smaalen%20S.%20van%20%281991%29.%20Phys.%20Rev.%20B%2C%2043%2C%2011330%E2%80%9311341.">Google Scholar</a><br /> </span> <span class="font_size_3 bb"><a href="#sourceBB36"><img class="bibarrow" alt="First citation" src="../../../../../../logos/arrows/j_uparr.gif" width="13" height="14" title="First citation" /></a><a class="bbanchor" id="BB36"></a>Spadaccini, N. & Hall, S. R. (2012). <span class="it"><i>J. Chem. Inf. Model.</i></span> <span class="b"><b>52</b></span>, 1907–1916. <a class="biblink" href="https://scripts.iucr.org/cgi-bin/cr.cgi?rm=isi&ut=000308254200002">Web of Science</a> <a class="biblink" href="https://doi.org/10.1021%2Fci300075z">CrossRef</a> <a class="biblink" href="https://chemport.cas.org/cgi-bin/sdcgi?APP=ftslink&action=reflink&origin=iucr&version=1.0&coi=1:CAS:528:DC%2BC38XovFakurY%3D&pissn=unknown_on_link_creation&pyear=unknown_on_link_creation&md5=2297cf0925f6641812dbeed15912a503">CAS</a> <a class="biblink" href="https://scripts.iucr.org/cgi-bin/cr.cgi?rm=pmed&pmid=22725613">PubMed</a> <a class="biblink" href="https://scholar.google.com/scholar?q=Spadaccini%20N.%20%26amp%3B%20Hall%20S.%20R.%20%282012%29.%20J.%20Chem.%20Inf.%20Model.%2052%2C%201907%E2%80%931916.">Google Scholar</a><br /> </span> <span class="font_size_3 bb"><a href="#sourceBB37"><img class="bibarrow" alt="First citation" src="../../../../../../logos/arrows/j_uparr.gif" width="13" height="14" title="First citation" /></a><a class="bbanchor" id="BB37"></a>Spek, A. L. (2003). <span class="it"><i>J. Appl. Cryst.</i></span> <span class="b"><b>36</b></span>, 7–13. <a class="biblink" href="https://scripts.iucr.org/cgi-bin/cr.cgi?rm=isi&ut=000180457300002">Web of Science</a> <a class="biblink" href="https://doi.org/10.1107%2FS0021889802022112">CrossRef</a> <a class="biblink" href="https://chemport.cas.org/cgi-bin/sdcgi?APP=ftslink&action=reflink&origin=iucr&version=1.0&coi=1:CAS:528:DC%2BD3sXltlChtw%3D%3D&pissn=unknown_on_link_creation&pyear=unknown_on_link_creation&md5=f89487ac267f818d7f6e870077e2a817">CAS</a> <a class="biblink" href="https://journals.iucr.org/paper?os0104">IUCr Journals</a> <a class="biblink" href="https://scholar.google.com/scholar?q=Spek%20A.%20L.%20%282003%29.%20J.%20Appl.%20Cryst.%2036%2C%207%E2%80%9313.">Google Scholar</a><br /> </span> <span class="font_size_3 bb"><a href="#sourceBB38"><img class="bibarrow" alt="First citation" src="../../../../../../logos/arrows/j_uparr.gif" width="13" height="14" title="First citation" /></a><a class="bbanchor" id="BB38"></a>Spek, A. L. (2020). <span class="it"><i>Acta Cryst.</i></span> E<span class="b"><b>76</b></span>, 1–11. <a class="biblink" href="https://scripts.iucr.org/cgi-bin/cr.cgi?rm=isi&ut=000505956900001">Web of Science</a> <a class="biblink" href="https://doi.org/10.1107%2FS2056989019016244">CrossRef</a> <a class="biblink" href="https://journals.iucr.org/paper?su5533">IUCr Journals</a> <a class="biblink" href="https://scholar.google.com/scholar?q=Spek%20A.%20L.%20%282020%29.%20Acta%20Cryst.%20E76%2C%201%E2%80%9311.">Google Scholar</a><br /> </span> <span class="font_size_3 bb"><a href="#sourceBB39"><img class="bibarrow" alt="First citation" src="../../../../../../logos/arrows/j_uparr.gif" width="13" height="14" title="First citation" /></a><a class="bbanchor" id="BB39"></a>Todorov, G. & Bernstein, H. J. (2008). <span class="it"><i>J. Appl. Cryst.</i></span> <span class="b"><b>41</b></span>, 808–810. <a class="biblink" href="https://scripts.iucr.org/cgi-bin/cr.cgi?rm=isi&ut=000257700100023">Web of Science</a> <a class="biblink" href="https://doi.org/10.1107%2FS002188980801385X">CrossRef</a> <a class="biblink" href="https://chemport.cas.org/cgi-bin/sdcgi?APP=ftslink&action=reflink&origin=iucr&version=1.0&coi=1:CAS:528:DC%2BD1cXos12gs7Y%3D&pissn=unknown_on_link_creation&pyear=unknown_on_link_creation&md5=28335bc422d762f8497bb111c5a874a6">CAS</a> <a class="biblink" href="https://journals.iucr.org/paper?he5407">IUCr Journals</a> <a class="biblink" href="https://scholar.google.com/scholar?q=Todorov%20G.%20%26amp%3B%20Bernstein%20H.%20J.%20%282008%29.%20J.%20Appl.%20Cryst.%2041%2C%20808%E2%80%93810.">Google Scholar</a><br /> </span> <span class="font_size_3 bb"><a href="#sourceBB40"><img class="bibarrow" alt="First citation" src="../../../../../../logos/arrows/j_uparr.gif" width="13" height="14" title="First citation" /></a><a class="bbanchor" id="BB40"></a>Twitter (2019). <span class="it"><i>Bootstrap</i></span>, <a href="https://getbootstrap.com">https://getbootstrap.com</a>. <a class="biblink" href="https://scholar.google.com/scholar?q=Twitter%20%282019%29.%20Bootstrap%2C%20https%3A%2F%2Fgetbootstrap.com.">Google Scholar</a><br /> </span> <span class="font_size_3 bb"><a href="#sourceBB41"><img class="bibarrow" alt="First citation" src="../../../../../../logos/arrows/j_uparr.gif" width="13" height="14" title="First citation" /></a><a class="bbanchor" id="BB41"></a>Vaitkus, A., Merkys, A. & Gražulis, S. (2021). <span class="it"><i>J. Appl. Cryst.</i></span> <span class="b"><b>54</b></span>, 661–672. <a class="biblink" href="https://scripts.iucr.org/cgi-bin/cr.cgi?rm=isi&ut=000637331900028">Web of Science</a> <a class="biblink" href="https://doi.org/10.1107%2FS1600576720016532">CrossRef</a> <a class="biblink" href="https://chemport.cas.org/cgi-bin/sdcgi?APP=ftslink&action=reflink&origin=iucr&version=1.0&coi=1:CAS:528:DC%2BB3MXot1Gksrk%3D&pissn=unknown_on_link_creation&pyear=unknown_on_link_creation&md5=6e08b2a0be3d67b5bb0dbff03bd30fca">CAS</a> <a class="biblink" href="https://journals.iucr.org/paper?yr5065">IUCr Journals</a> <a class="biblink" href="https://scholar.google.com/scholar?q=Vaitkus%20A.%2C%20Merkys%20A.%20%26amp%3B%20Gra%C5%BEulis%20S.%20%282021%29.%20J.%20Appl.%20Cryst.%2054%2C%20661%E2%80%93672.">Google Scholar</a><br /> </span> <span class="font_size_3 bb"><a href="#sourceBB42"><img class="bibarrow" alt="First citation" src="../../../../../../logos/arrows/j_uparr.gif" width="13" height="14" title="First citation" /></a><a class="bbanchor" id="BB42"></a>Van Rossum, G. & Drake, F. L. (2009). <span class="it"><i>Python 3 Reference Manual.</i></span> Scotts Valley,: CreateSpace. <a class="biblink" href="https://scholar.google.com/scholar?q=Van%20Rossum%2C%20G.%20%26amp%3B%20Drake%2C%20F.%20L.%20%282009%29.%20Python%203%20Reference%20Manual.%20Scotts%20Valley%2C%3A%20CreateSpace.">Google Scholar</a><br /> </span> <span class="font_size_3 bb"><a href="#sourceBB43"><img class="bibarrow" alt="First citation" src="../../../../../../logos/arrows/j_uparr.gif" width="13" height="14" title="First citation" /></a><a class="bbanchor" id="BB43"></a>Westrip, S. P. (2010). <span class="it"><i>J. Appl. Cryst.</i></span> <span class="b"><b>43</b></span>, 920–925. <a class="biblink" href="https://scripts.iucr.org/cgi-bin/cr.cgi?rm=isi&ut=000279429500034">Web of Science</a> <a class="biblink" href="https://doi.org/10.1107%2FS0021889810022120">CrossRef</a> <a class="biblink" href="https://chemport.cas.org/cgi-bin/sdcgi?APP=ftslink&action=reflink&origin=iucr&version=1.0&coi=1:CAS:528:DC%2BC3cXosVygtbw%3D&pissn=unknown_on_link_creation&pyear=unknown_on_link_creation&md5=46073c48ea6b9031d9fa608bad8e2b6d">CAS</a> <a class="biblink" href="https://journals.iucr.org/paper?ce5089">IUCr Journals</a> <a class="biblink" href="https://scholar.google.com/scholar?q=Westrip%20S.%20P.%20%282010%29.%20J.%20Appl.%20Cryst.%2043%2C%20920%E2%80%93925.">Google Scholar</a><br /> </span> <span class="font_size_3 bb"><a href="#sourceBB44"><img class="bibarrow" alt="First citation" src="../../../../../../logos/arrows/j_uparr.gif" width="13" height="14" title="First citation" /></a><a class="bbanchor" id="BB44"></a>Widenius, M., Axmark, D. & DuBois, P. (2002). <span class="it"><i>Mysql Reference Manual.</i></span> Sebastopol: O'Reilly. <a class="biblink" href="https://scholar.google.com/scholar?q=Widenius%2C%20M.%2C%20Axmark%2C%20D.%20%26amp%3B%20DuBois%2C%20P.%20%282002%29.%20Mysql%20Reference%20Manual.%20Sebastopol%3A%20O%27Reilly.">Google Scholar</a><br /> </span> </p> </div> <div class="oainfo"> <p> This is an open-access article distributed under the terms of the <a href="http://creativecommons.org/licenses/by/4.0/legalcode">Creative Commons Attribution (CC-BY) Licence</a>, which permits unrestricted use, distribution, and reproduction in any medium, provided the original authors and source are cited. </p></div><div class="jinfo_header jinfo_header_article"> <div class="jh_catchline"> <div class="jh_left"> <div class="jicon_j"><table class="layout" style=""><tr><td><a href="/j"><img alt="Journal logo" class="jicon" src="//journals.iucr.org/logos/jicons/j_96x112.png" /></a></td><td><span class="jicon_logotitle">JOURNAL OF<br/>APPLIED<br/>CRYSTALLOGRAPHY</span></td></tr></table></div><!-- end div jicon_ --> <div class="clear"></div> <div class="jh_issn">ISSN: 1600-5767</div><!-- end div jh_issn --><div class="clear"></div> </div> <div class="jh_right"> <div class="jh_issueinfo"><span class="jh_volume" style=""><a style="" href="/j/services/archive.html"><span style="">Volume 57</span></a></span><span class="jh_biblspace" style="">|</span> <span class="jh_part"><a href="../index.html">Part 5</a></span><span class="jh_biblspace" style="">|</span> <span class="jh_monthandyear"><a href="../index.html"><span style="">October 2024</span></a></span><span class="jh_biblspace" style="">|</span> <span class="jh_pages">Pages 1640-1649</span><br /></div><!-- end div jh_issueinfo --><div class="clear"></div> <div class="jh_doi"> <span class="doi_catchline"><a href="https://doi.org/10.1107/S1600576724007908">https://doi.org/10.1107/S1600576724007908</a></span> </div><div class="clear"></div> <div class="jh_openaccesslogo" style="float: right;"><div class="openaccesslogo"><div class="oalogotext" style="" title="This is an open-access article distributed under the terms of the Creative Commons Attribution Licence, which permits unrestricted use, distribution, and reproduction in any medium, provided the original authors and source are cited.">Open <img alt="Open Access" class="oalogo" src="/logos/open.png" /> access</div></div> </div> <div class="clear"></div> </div><div class="clear"></div> </div><!-- end div jh_catchline --> </div> <div class="clear"></div> </div> </div> </div> </div><!-- End div layout_cjo_singlecolumn --> <div class="clear"></div> </div> <div id="journalsocialmedia"><table summary="social media" class="socialj"><tbody><tr><td class="socialtitle">Follow J. Appl. Cryst.</td><td class="socialimg"><table summary="formatting" class="button_sgl_table"><tbody><tr><td class="noextraspace"><a href="https://www.iucr.org/people/wdc/ealert"><img src="/logos/mail_24.png" title="Sign up for e-alerts" alt="Sign up for e-alerts" /></a></td></tr></tbody></table></td><td class="slink"><a href="https://www.iucr.org/people/wdc/ealert" title="Sign up for e-alerts">E-alerts</a></td><td class="socialimg"><table summary="formatting" class="button_sgl_table"><tbody><tr><td class="noextraspace"><a href="https://twitter.com/JApplCryst" target="_blank"><img src="/logos/twitter_24.png" title="Follow J. Appl. Cryst. on Twitter" alt="Follow J. Appl. Cryst. on Twitter" /></a></td></tr></tbody></table></td><td class="slink"><a href="https://twitter.com/JApplCryst" title="Follow J. Appl. Cryst. on Twitter" target="_blank">Twitter</a></td><td class="socialimg"><table summary="formatting" class="button_sgl_table"><tbody><tr><td class="noextraspace"><a href="https://www.facebook.com/iucr.org" target="_blank"><img src="/logos/facebook_24.png" title="Follow us on facebook" alt="Follow us on facebook" /></a></td></tr></tbody></table></td><td class="slink"><a href="https://www.facebook.com/iucr.org" title="Follow us on facebook" target="_blank">Facebook</a></td><td class="socialimg"><table summary="formatting" class="button_sgl_table"><tbody><tr><td class="noextraspace"><a href="https://journals.iucr.org/services/rss.html"><img src="/logos/rss_24.png" title="Sign up for RSS feeds" alt="Sign up for RSS feeds" /></a></td></tr></tbody></table></td><td class="slink"><a href="https://journals.iucr.org/services/rss.html" title="Sign up for RSS feeds">RSS</a></td></tr></tbody></table></div><!-- end div journalsocialmedia --> <hr/> <div id="footersearch"> <form action="//scripts.iucr.org/cgi-bin/full_search" method="post" accept-charset="utf-8"> <div id="fs_search"> <table summary="search formatting" id="fs_tfooter" class="center"> <tbody> <tr> <td id="fs_tdwords" colspan="2" class="inputWrap"> <label for="fs_words">Search IUCr Journals</label> <input name="words" id="fs_words" title="Search IUCr Journals" type="text" /> </td> <td id="fs_tddoi" colspan="2" class="inputWrap"> <label for="fs_doi">doi</label><input title="doi" name="doi" id="fs_doi" type="text" /> </td> <td id="fs_tdgo" rowspan="2"> <input name="Action" value="GO" id="fs_go" type="submit" /><br /> <a id="fs_advs" href="https://scripts.iucr.org/cgi-bin/full_search" title="advanced search" class="link">Advanced search</a> </td> </tr> <tr> <td id="fs_tdauthor" class="inputWrap"> <label for="fs_authorsearch">Author</label> <input title="author" name="authorsearch" id="fs_authorsearch" size="15" type="text" /> </td> <td id="fs_tdjournalList"> <select id="fs_journalList" name="journalList" class="toright" size="1" onchange="$(this).css('color','#000');$(this).children().css('color','#666');"><option selected="selected" value="">All journals</option> <option value="m">IUCrJ</option> <option value="q">Acta Cryst</option> <option value="a">Acta Cryst A</option> <option value="b">Acta Cryst B</option> <option value="c">Acta Cryst C</option> <option value="d">Acta Cryst D</option> <option value="e">Acta Cryst E</option> <option value="f">Acta Cryst F</option> <option value="j">J Appl Cryst</option> <option value="s">J Synchrotron Rad</option> <option value="x">IUCrData</option> </select> </td> <td id="fs_tdvolume" class="inputWrap"> <label for="fs_volumeselect">volume</label><input title="volume" name="volumeselect" size="6" id="fs_volumeselect" type="text" /> </td> <td id="fs_tdpage" class="inputWrap"> <label for="fs_fpageselect">page</label><input title="page" name="fpageselect" size="4" id="fs_fpageselect" type="text" /> </td> </tr> </tbody> </table> </div> </form> </div><!-- end div footersearch --> <div id="footer" class=""> <div id="ft_linkbar" class="center"> Copyright © <a href="https://www.iucr.org/" title="International Union of Crystallography">International Union of Crystallography</a><br/> <a href="/" title="Home">Home</a> <a href="/services/contactus.html" title="Contact us">Contact us</a> <a href="/services/siteindex.html" title="Site index">Site index</a> <a href="https://www.iucr.org/" title="About us">About us</a> <a href="/services/organizations.html" title="Partners and site credits">Partners and site credits</a> <a href="/services/help.html" title="Help">Help</a> <a href="/services/termsofuse.html" title="Terms of use">Terms of use</a><a href="/services/privacy.html" title="Privacy and cookies">Privacy and cookies</a> </div> <div id="ft_whoarewe" class="center"> The IUCr is a scientific union serving the interests of crystallographers and other scientists employing crystallographic methods. </div> </div><!-- end div footer --> </div><!-- end div article --></div><!-- end div jpage_* --> <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.10.3/jquery-ui.min.js"></script> <script src="/javascript/jquery.dotdotdot.min.js" type="text/javascript"></script> <script src="/javascript/jquery/jquery.validate.js" type="text/javascript"></script> <script type="text/javascript"> $(document).ready(function(){ $("button").click(function(){ $(".mathmode").toggle(); }); }); </script> <script src="/javascript/inputmask-1.1.js" type="text/javascript"></script> <script src="/javascript/iucrscripts.js" type="text/javascript"></script> <script type="text/javascript"> <!-- $(document).ready(function(){ if ($("#latest").get(0)) { myAjax("late", "j", "#latest"); myAjax("read", "j", "#latest"); myAjax("cited", "j", "#latest"); myAjax("high", "j", "#latest");}; if ($("#iucrmessages").get(0)) { myAjax("mess", "j", "#iucrmessages");} if ($("#iucrmeetings").get(0)) { myAjax("meet", "j", "#iucrmeetings");} if ($("#highlights").get(0)) { myAjax("hl", "j", "#highlights");} }); var addthis_config = { ui_click: true, ui_cobrand: "IUCr" } --> </script> <script src="/javascript/jquery/tabber-minimized.js" type="text/javascript"></script> <script type="text/javascript"> <!-- $(function(){function e(){for(i=0;i<c.length;i++){var e=c[i].getAttribute(d);if(/crossmark.crossref/.test(e));else for(j=0;j<b.length;j++){var f=b[j];if(f.test(e)){console.log("Inappropriate hard-coded URL: "+f+" in "+c[i].tagName+"/"+d+":"+e);var g=document.getElementsByTagName("body")[0];/journals.working/.test(a)||/journals.test/.test(a)?document.URL.match("journals.test.iucr.org/doc/")||g.setAttribute("bgcolor","#FFFF66"):document.URL.match("journals.test.iucr.org/doc/")||g.setAttribute("bgcolor","#EEEEEE")}}}}var c,d,a=document.location.href,b=[/journals.working/,/vm01.iucr.org/,/platon.iucr.org/,/journals.test/,/infoweb.css/,/publcif.css/];c=document.getElementsByTagName("A"),d="href",e(c,d),c=document.getElementsByTagName("IMG"),d="src",e(c,d),c=document.getElementsByTagName("LINK"),d="href",e(c,d)}); --> </script> <script type="text/javascript" src="/javascript/jquery/jquery.cookie.js"></script> <script type="text/javascript" src="/javascript/reference.js"></script> <script type="text/javascript" src="//journals.iucr.org/javascript/subwindow.js"></script> <script type="text/javascript" src="/javascript/contents.js"></script> <script type="text/javascript" src="/javascript/menus.js"></script> <script type="text/javascript" src="//publcif.iucr.org/widgets/cifmol/cifmol_min.js"></script> <script type="text/javascript" src="//publcif.iucr.org/widgets/pageels/sup_cif.js"></script> <script type="text/javascript" charset="utf-8" src="//publcif.iucr.org/widgets/flot/jquery.flot.js"></script><script type="text/javascript" charset="utf-8" src="//publcif.iucr.org/orcid/js/citeplot.js?v=2024"></script> <!-- The 'IUCRSCR...' comment after this is important and must appear in EVERY page that includes page_javascript_tt.js --> <!-- IUCRSCRIPTEND --> </body> <!-- Source TT template: "/journals/www/j/issues/2024/05/00/yr5136/yr5136bdy_insert.tt" --> </html>