A method for verifying the program code of a synthetic computer program
Patent Information
- Authority / Receiving Office
- JP · JP
- Patent Type
- Applications
- Current Assignee / Owner
- F HOFFMANN LA ROCHE & CO AG
- Filing Date
- 2023-06-07
- Publication Date
- 2026-05-27
AI Technical Summary
Existing methods for verifying program codes in synthetic computer programs used for oligonucleotide synthesis are complex and prone to deviations, leading to incorrect or substandard oligonucleotide production due to difficulties in detecting discrepancies between the program and the synthesis plan.
A method involving automatic parsing and constructing a parameter matrix from the program code to verify the program code, including an automatic syntax analysis procedure to search for parameter values, and an error detection step to ensure compliance with a predetermined list of parameters, thereby reducing the complexity of verifying the program code.
The method simplifies the verification process by reducing it to evaluating a parameter matrix, enhancing the accuracy and reliability of oligonucleotide synthesis by detecting and correcting errors in the program code, ensuring consistent and high-quality production.
Smart Images

Figure 00000000_0000_ABST
Abstract
Description
Technical Field
[0001] The present invention relates to a method and a system for verifying program codes of synthetic computer programs. The present invention further relates to a computer program and a computer-readable storage medium for executing the method. Furthermore, the present invention relates to a method for synthesizing at least one oligonucleotide. The method, system, computer program, and computer-readable storage medium can be used particularly for the research or production of oligonucleotides by solid-phase synthesis, particularly on an industrial scale.
Background Art
[0002] The principle of oligonucleotide synthesis is well known in the art (see, for example, Oligonucleotide synthesis on Wikipedia, a free encyclopedia, https: / / en.wikipedia.org / wiki / Oligonucleotide synthesis, accessed on May 30, 2022). For example, the synthesis of oligonucleotides by solid-phase synthesis generally requires performing a plurality of synthesis cycles sequentially. The synthesis can be automatically performed using a computer-controlled synthesizer configured to automatically execute a sequence of synthesis cycles. The synthesizer may be particularly configured to execute a sequence of synthesis cycles according to a computer program that controls the functions of the synthesizer. The computer program may include commands for controlling the synthesizer according to a given synthesis plan indicating specific synthesis parameters such as reagents, solvents, flow rates, volumes, time intervals, etc., and for setting the synthesizer in different synthesis cycles.
[0003] Generally, when using a computer program to control the synthesis of oligonucleotides, it is difficult to detect a deviation between the computer program and the synthesis plan. This is because computer programs often contain complex sequences of commands, especially those with multiple functions and subroutines. Deviations between the computer program and the synthesis plan, such as deviations regarding the reagents or solvents used in a particular synthesis cycle, and / or deviations in the amount, flow time, and / or delivery time of the reagents or solvents used in a particular synthesis cycle, can render the synthesis of oligonucleotides impossible or result in the production of incorrect and / or substandard quality oligonucleotides.
[0004] Since oligonucleotides can be particularly used for pharmaceutical purposes, it is desirable that any computer program for controlling the synthesis be carefully verified before actually starting the synthesis. However, as outlined above, the complexity of many computer programs commonly used to control synthesis makes verification quite difficult. Specifically, the use of functions and routines within the program deteriorates the checking of completeness and the values of many parameters used in the synthesis process.
Summary of the Invention
Problems to be Solved by the Invention
[0005] Therefore, it is desirable to provide a method and apparatus that at least partially address the above-described technical problems. Specifically, a method and apparatus are proposed that enable the verification of computer programs used in oligonucleotide synthesis and provide highly reliable and robust oligonucleotide synthesis.
Means for Solving the Problems
[0006] This problem is addressed by a method for verifying the program code of a synthetic computer program, a system for verifying the program code of a synthetic computer program, a computer program and a computer-readable storage medium for executing the above method, and a method for synthesizing at least one oligonucleotide having the features of the independent claims. Advantageous embodiments, which may be implemented alone or in any combination, are set out in the dependent claims as well as throughout the specification.
[0007] As used hereinafter, the terms "have", "comprise", or "include", or any grammatical variations thereof, are used non-exclusively. Thus, these terms may refer to both situations where there are no additional features in the entity being described in this context, in addition to the features introduced by these terms, and situations where one or more additional features are present. By way of example, the expressions "A has B", "A comprises B", and "A includes B" may all refer to situations where, in addition to B, there are no other elements in A (i.e., the situation where A consists solely and exclusively of B), and situations where, in addition to B, there are elements C, elements C and D, and even further elements, etc., one or more additional elements are present in entity A.
[0008] Furthermore, it should be noted that the terms "at least one" or "one or more" or similar expressions indicating that a feature or element may be present one or more times are typically only used once when introducing each respective feature or element. Hereinafter, in most cases, when referring to each respective feature or element, the expressions "at least one" or "one or more" are not repeated, despite the fact that each respective feature or element may be present one or more times.
[0009] Furthermore, when used hereinafter, the terms "preferably", "more preferably", "particularly", "even more particularly", "specifically", "more specifically", or similar terms are used with optional features without limiting the possibility of alternatives. Thus, the features introduced by these terms are optional features and are not intended to limit the technical scope of the claims in any way. The present invention may be practiced, as would be understood by those skilled in the art, by using alternative features. Similarly, features introduced by "in an embodiment of the present invention" or similar expressions are optional features without any limitation regarding alternative embodiments of the present invention, without any limitation regarding the technical scope of the present invention, and without any limitation regarding the possibility of combining such introduced features with other optional or non-optional features of the present invention.
[0010] In a first aspect of the present invention, a method for verifying program code of a synthetic computer program is disclosed.
[0011] As used herein, the term "verify" is a broad term and should be given its ordinary and customary meaning to one of ordinary skill in the art and should not be limited to a special or particular meaning. Specifically, this term can refer to, but is not limited to, the process of evaluating one or more specifications of program code. Specifically, the process of verifying program code, also known as "verification" or "software verification", can include evaluating the implementation of one or more specifications of the program code. The specifications of the program code can include one or more of the following: outcomes, specifically, predefined outcomes or results of the program code after execution, computing resources required to execute the program code, time required to execute the program code, parameters and parameter values used during or by the program code, etc. In other words, the process of verification can include determining whether one or more of the specifications of the program code meet one or more defined conditions, such as conditions defined prior to creating the program code, and / or conditions implemented or defined when the program is executed, for example, by calling the program code with a desired set of parameters and / or parameter values. The result of the process of verifying program code can include one or more findings that the specifications of the program code are fully implemented, partially implemented, and / or not implemented. As an example, the program code of a synthetic computer program may be created according to a given synthesis plan. The verification process can include, for example, determining whether the program code is suitable for implementing a given synthesis plan on a synthesis apparatus by performing a given synthesis cycle sequence, using the correct reagents, using the correct reagent sequence, using the correct solvent sequence, using the correct starting materials, using the correct solvent and / or flow rate, etc.In particular, the process of validating the program code may include determining whether the correct occurrence sequence, for example, the correct occurrence sequence of reactants and / or solvents in a specific synthesis cycle, is used according to a given synthesis plan.
[0012] As used herein, the term "program code" is a broad term and should be given its ordinary customary meaning to those skilled in the art and should not be limited to a special or particular meaning. Specifically, this term may refer to, but is not limited to, a sequence of instructions that can be executed or interpreted by a computer. When the program code is executed by a computer, specifically by the central processing unit (CPU) of the computer, and more specifically by the central programming device of the computer, the computer can be made to execute the instructions contained in the program code. The program code may be written in a programming language or scripting language such as C, C#, C++, Java, Python, R, Fortran, JavaScript, HTML. The program code may specifically be in a form readable by humans and may thus also be referred to as "source code". In order to execute the program code on a computer, the program code may be transferred into machine-readable instructions by a compiler specific to the programming language. The instructions of the program code may include, for example, instructions to cause the computer to execute functions, variables, constants, and / or specific functions and / or declarations for defining classes included in the program code. Alternatively or additionally, the program code may include auxiliary information such as a header placed before the sequence of instructions contained in the program code, comments, or further information between the instructions of the program code. Alternatively or additionally, the program code may include incomplete program code such as program code having gaps to be filled with specific parameter values, and the program code may be completed by performing a method.
[0013] The sequence of instructions included in the program code may specifically be included in the text section following the header. The program code may include a single sequence of instructions that, when executed by a computer, is executed in a given sequence starting, for example, from the first instruction and ending with the last instruction. Alternatively or additionally, the program code may include multiple program code blocks, each of which includes a sequence of instructions. The sequence of instructions within each block of the program code may be executed in a given order. However, the program code may be included within the main sequence of instruction references to one or more other blocks of the program code. Thus, when executing the main sequence of instructions of the program code, the computer may jump to and execute the referenced block of the program code. Further, the program code may include multiple references to the same block of the program code.
[0014] The program code may specifically be a method file, specifically a Unicorn method file. Additionally or alternatively, the program code may be binary program code.
[0015] As used herein, the term "computer program" is a broad term and should be given its ordinary and customary meaning to those of ordinary skill in the art and should not be limited to a special or particular meaning. Specifically, this term can refer to, but is not limited to, a functional entity that includes one or more software applications that enable a computer to perform at least one function. Specifically, a computer program may represent an algorithm that is executed by a computer when the computer executes the program code of the computer program. In other words, the program code may include computer-readable instructions, and a computer program may be the manifestation of what a computer actually does when the computer executes the computer-readable instructions.
[0016] As used herein, the term "computer" is a broad term and should be given its ordinary and customary meaning to those of ordinary skill in the art and should not be limited to a special or particular meaning. Specifically, this term may refer to, but is not limited to, a device or system configured for electronic data processing. Specifically, a computer that may include a single computer, a distributed computer, or a computer network may also include one or more processors for data processing. As used herein, the term "processor" is a broad term and should be given its general and ordinary meaning to those of ordinary skill in the art and should not be limited to a special or particular meaning. Specifically, this term may refer to any logic circuit configured to perform the basic operations of a computer or system, and further or alternatively, generally, a device configured to perform computational or logical operations, but is not limited thereto. In particular, the processor may be set to process the basic instructions that drive the computer or system. By way of example, the processor may include at least one arithmetic logic unit (ALU), at least one floating point unit (FPU) such as a numeric co-processor or numeric processor, a plurality of registers, specifically registers configured to supply operands to the ALU and store the operation results, and memory such as L1 and L2 cache memories. In particular, the processor may be a multi-core processor. Specifically, the processor may be a central processing unit (CPU), or may include a CPU. Additionally or alternatively, the processor may be, or may include, a microprocessor, and thus specifically, the elements of the processor may be included in a single integrated circuit (IC) chip. Additionally or alternatively, the processor may be, or may include, one or more application specific integrated circuits (ASICs) and / or one or more field programmable gate arrays (FPGAs) and / or one or more tensor processing units (TPUs) and / or one or more dedicated machine learning optimization chips, or the like, or may include them.The processor may specifically be configured to perform one or more evaluation operations, for example, by software programming.
[0017] As used herein, the term "synthetic computer program" is a broad term and should be given its ordinary and customary meaning to those skilled in the art and should not be limited to a special or particular meaning. Specifically, this term may refer to, but is not limited to, a computer program that a computer can execute to control an automated synthesizer for synthesizing at least one oligonucleotide. The program code may be part of or included in the synthetic computer program. The synthetic computer program may include one or more software applications for executing the program code on a computer. For example, the synthetic computer program may include at least one compiler for converting the program code into machine-readable instructions. Thus, when executed by a computer, the synthetic computer program may include at least one software application that causes the computer to execute the instructions provided by the program code to perform, for example, the synthesis of at least one oligonucleotide with an automated synthesizer. The synthetic computer program may include at least one software application for interacting with one or more of the computer's hardware and the automated synthesizer. Further, the synthetic computer program may include at least one software application for providing a user interface. Through the user interface, a user may input and / or create program code for synthesizing at least one oligonucleotide with an automated synthesizer.
[0018] The synthetic computer program is configured to computer-control an automatic synthesizer to automatically synthesize at least one oligonucleotide. The synthetic computer program has a plurality of program cycles for computer-controlling the automatic synthesizer to sequentially synthesize an oligonucleotide using at least one sequence of the synthesis cycle.
[0019] As used herein, the term "computer control" is a broad term and should be given its ordinary and customary meaning to those of ordinary skill in the art and should not be limited to a special or particular meaning. Specifically, this term can refer to, but is not limited to, the process of controlling one or more devices by at least one computer. Controlling specifically may include at least one of the steps of setting one or more parameters and / or parameter values for the device to be controlled, monitoring the parameters, determining a deviation between the setpoint of the parameter and the actual value of the parameter, and adapting the setpoint of the parameter according to the determined deviation. The parameters may be continuous parameters and / or discrete parameters, specifically binary parameters. For example, controlling an automatic synthesizer may include turning one or more valves of the automatic synthesizer on and / or off and / or setting the valves to a specific position. Alternatively or additionally, controlling the automatic synthesizer may include starting one or more pumps, specifically setting the flow rate and / or pump pressure with one or more pumps. The parameters may be set by at least one actuator, specifically using an electric actuator. The actuator may be specifically configured to move and / or control the mechanism of the automatic synthesizer, for example, to move and / or control the valves and / or pumps of the automatic synthesizer, particularly by converting an electronic control signal into mechanical movement. The parameters may be monitored by at least one sensor device, such as a flow sensor, a fluid velocity sensor, and / or a pressure sensor.
[0020] As used herein, the term "synthesize" is a broad term and should be given its ordinary and customary meaning to one of ordinary skill in the art and should not be limited to a special or particular meaning. Specifically, this term can refer, but is not limited to, generating at least one covalent bond between two nucleoside monomers of an oligonucleotide by chemical means. Methods for synthesizing oligonucleotides have been known in the art for a long time, and the most widely used method is solid-phase phosphoramidite synthesis using phosphoramidite building blocks, which, in one embodiment, are derived from protected 2'-deoxynucleosides (dA, dC, dG, dT), ribonucleosides (A, C, G, and U), or chemically modified nucleosides such as locked nucleic acid (LNA) monomers. See, for example, the Wikipedia citation above. In one embodiment, the synthesis is semi-automated or fully automated, and the synthesis steps can be partially or fully controlled by an automated synthesizer. In one embodiment, the synthesis is automated synthesis as specified hereinbelow.
[0021] As used herein, the term "synthesis device" is a broad term and should be given its ordinary and customary meaning to those skilled in the art and should not be limited to a special or particular meaning. Specifically, in one embodiment, for example, as further outlined in more detail below, the term may refer to, but is not limited to, any device adapted to perform the synthesis specified herein in an automated manner. The synthesis device may typically be an automated synthesis device capable of synthesizing oligonucleotides on a desired scale. An automated synthesis device may be, for example, the oligoplot synthesis device commercially available from Cytiva (registered trademark). The synthesis device may include at least one synthesis column having at least one stationary phase material, such as at least one solid phase material. The synthesis device may further include at least one pump, connectors to a plurality of chemical sources, and / or a system of switchable valves for selectively supplying chemicals, particularly solvents and / or reactants, to the column. In particular, the synthesis device may include an amidite pump, an amidite valve, a solvent / reagent pump, a solvent / reagent valve, a system of switchable valves for supplying liquid from the column to a predetermined container, at least one temperature control element for setting the column to at least one predetermined temperature, a column inlet valve for allowing a liquid flow into the column, a column outlet valve for allowing a liquid flow from the column, a recycle bypass, specifically, a recycle bypass for recycling liquid on the column, such as by connecting the column outlet valve to the column inlet valve by at least one valve, and / or a waste valve for directing liquid from the column to at least one waste system.
[0022] The automatic synthesizer may further include at least one processor described above in this specification, and the processor is adapted to execute a synthetic computer program. Accordingly, in one embodiment, the processor is operably coupled to at least the valves and / or pumps of the automatic synthesizer. Those skilled in the art know how to operably connect a microprocessor to other units of the automatic synthesizer. Suitable automatic synthesizers are known in the art and are commercially available.
[0023] As used herein, the terms "automatic" and "automatically" are broad terms and should be given their ordinary and customary meaning to one of ordinary skill in the art and should not be limited to a special or particular meaning. Specifically, these terms can refer to, but are not limited to, a device that is at least partially controlled by at least one computer, specifically a device that includes one or more processors, and / or a process that is at least partially performed by at least one computer and / or machine, particularly without manual operation and / or interaction with a user. Thus, the term "automatic" may refer to a situation where an automated device, such as an automated synthesis device, is configured to fully or at least partially perform at least one task without the need for human intervention, and / or a situation where an automated device is at least partially controlled by at least one computer such that a portion of the functionality of the automated device is controlled by the computer. As an example, the automatic synthesis of at least one oligonucleotide may include, when a synthesis device is prepared, the device and materials for synthesis are provided, and automatic synthesis is initiated, the complete or at least partial synthesis of the desired oligonucleotide or at least its precursor or intermediate product, preferably without the need for human intervention. Alternatively, the term may also refer to a situation where an automated device, such as an automated synthesis device, is configured to be fully controlled by at least one computer such that all of the functionality of the automated device is controlled by the computer. Similarly, the term "automatic" as used, for example, in the context of a process for automatically synthesizing at least one oligonucleotide may refer to a situation where the process is fully or partially implemented or controlled by at least one computer, such that some of the process steps are performed by the computer, while other process steps are performed by manual interaction and / or by the user. Alternatively or additionally, automatically performing a process may include being fully performed by at least one computer, preferably without manual operation and / or interaction with a user.
[0024] In one embodiment, oligonucleotide synthesis is solid-phase synthesis, where the oligonucleotide being constructed is covalently attached to a solid support material via its 3'-terminal hydroxyl group and remains attached thereto throughout the entire process of chain construction. Suitable supports, such as the Primer support 5G from GE Healthcare, the NittoPhase® HL support from Kinovate, or a macroporous polystyrene support such as a controlled glass support, are commercially available.
[0025] Oligonucleotide synthesis in one embodiment is the stepwise addition of nucleotide residues to the 5'-end of the growing chain until the desired sequence is constructed. In one embodiment, each addition is called a synthesis cycle and may specifically include the following steps. al) The step of deblocking the protected hydroxyl group on the last nucleoside attached to the solid support or the growing chain. a2) The step of coupling the first nucleoside as an activated phosphoramidite with the free hydroxyl group on the solid support. a3) The step of oxidizing or sulfurizing each P-linked nucleoside to form each phosphodiester (P=O) or each phosphorothioate (P=S). a4) Optionally, the step of capping any unreacted hydroxyl groups on the solid support. a5) The step of deblocking the 5'-hydroxyl group of the latest nucleoside attached to the growing chain. a6) The step of coupling the next nucleoside as an activated phosphoramidite to the growing chain a7) Oxidizing or sulfurizing each P-linked dinucleoside to form each phosphodiester (P=O) or each phosphorothioate (P=S), a8) Optionally, the step of capping any unreacted 5'-hydroxyl groups a9) The step of repeating steps a5 - a8 until the desired sequence is constructed.
[0026] The final steps after the lock is completed are known to those skilled in the art and, in one embodiment, include deprotection of the main chain and / or cleavage from the resin, and the cleavage therefrom can be carried out, for example, using concentrated aqueous ammonia. Protecting groups on phosphate bases and nucleotide bases are also removed within this cleavage procedure.
[0027] According to the above, the term "synthesis cycle" relates to any sequence of steps carried out to add one nucleotide moiety to an oligonucleotide chain. The synthesis cycle may be an initiation cycle, i.e., a sequence of steps for covalently attaching the first nucleotide moiety to the solid phase of the synthesizer. Such an initiation cycle may include, for example, the steps described as steps a1) - a4) above in this specification. The synthesis cycle may also be an elongation cycle, i.e., a sequence of steps that causes elongation of the oligonucleotide chain, and optionally, the preparation of the oligonucleotide for the next elongation cycle. An exemplary sequence of steps for the elongation cycle is provided herein as steps a5) - a8).
[0028] As used herein, the term "oligonucleotide" is a broad term and should be given its ordinary and customary meaning to those of ordinary skill in the art and should not be limited to a special or particular meaning. Specifically, this term can refer to, but is not limited to, any chemical molecule containing at least two covalently linked nucleoside moieties. In one embodiment, the oligonucleotide contains 2 to 100 nucleotide moieties, i.e., has a "length" of 2 to 100 bases. In one embodiment, it contains 5 to 50 nucleotide moieties, and in a further embodiment, it contains 10 to 40 nucleotide moieties. The oligonucleotide can consist of optionally modified DNA, RNA, or LNA nucleotide monomers or combinations thereof. The LNA nucleotide monomer is a modified nucleotide containing a linker group (referred to as a bilarigle or bridge) between C2' and C4' of the ribose sugar ring of the nucleotide. These nucleotides are also referred to in the literature as bridged nucleic acids or bicyclic nucleic acids (BNA). As used herein, optionally modified means a modified nucleotide as compared to an equivalent DNA, RNA, or LNA nucleotide by the introduction of one or more modifications to the sugar moiety or the nucleobase moiety. Modifications and suitable building blocks are known in the art and include, but are not limited to, methoxyethyl (MOE) modification, fluoro modification, methoxy modification, etc.
[0029] As will be understood by those skilled in the art, the terms "nucleoside" and "nucleotide" are used herein in a broad sense since a nucleoside can include bases different from the standard bases of the genetic code. Also, the sugar moiety of a nucleoside may be a non-standard sugar, such as, for example, a 2' and / or 3'-derivatized ribose moiety, a bridged ribose moiety, a non-ribose moiety, and the like. In a preferred embodiment, the modified nucleoside includes a modified sugar moiety and may include, for example, one or more 2'-substituted nucleosides and / or one or more LNA nucleosides. Thus, the term modified nucleoside may also be used interchangeably herein with the terms "nucleoside analog" or modified "unit" or modified "monomer". In one embodiment, the sugar residue is ribose or 2'-deoxyribose. Nucleosides are generally linked to an oligonucleotide by phosphodiester (P=O) and / or phosphorothioate (P=S) internucleoside linkages, which covalently bond two nucleosides together. Thus, in some oligonucleotides, all internucleoside linkages may consist of phosphodiester (P=O), in other oligonucleotides, all internucleoside linkages may consist of phosphorothioate (P=S), or in still other oligonucleotides, the sequence of internucleoside linkages may vary and include both phosphodiester (P=O) and phosphorothioate (P=S) internucleoside linkages. As will be understood from the above description herein, the term "nucleotide" is used herein in a broad sense in relation to the monomers of an oligonucleotide. Thus, a nucleotide may be, for example, a nucleoside having a 5'-phosphate group (i.e., a nucleotide in the narrow sense), but may also be, for example, a phosphorothioate nucleotide.
[0030] Furthermore, the non-nucleoside moiety may be incorporated into an oligonucleotide such as a dye moiety, including a quencher moiety, an affinity moiety such as biotin, and / or a chelating agent moiety. The oligonucleotide may be 5'-amino modified such that an amino linker is attached to the 5'-terminal group of the oligonucleotide.
[0031] The nucleobase moiety may be represented by the letter code for each corresponding nucleobase, e.g., A, T, G, C or U, and each letter may optionally include a modified nucleobase of equivalent function. Modified nucleobases include, but are not limited to, nucleobases having a protecting group, such as tert-butylphenoxyacetyl, phenoxyacetyl, benzoyl, acetyl, isobutyryl or dimethylformamidinyl.
[0032] As outlined above, the synthetic computer program has a plurality of program cycles for computer controlling an automated synthesizer to sequentially synthesize oligonucleotides using at least one sequence of synthetic cycles. The term "program cycle" as used herein is a broad term and should be given its ordinary customary meaning to those of ordinary skill in the art and should not be limited to a special or particular meaning. Specifically, this term can refer to, but is not limited to, one or more blocks of program code for performing one synthetic cycle and / or one sub-step of one synthetic cycle from a sequence of synthetic cycles, as will be outlined in more detail below. The program cycles may be repeatedly implemented using the same or varying parameters, specifically as specified above herein with respect to the synthesis of oligonucleotides. The program cycles may be uniquely labeled within the program code, for example, by defining the name of each program cycle. The program cycles may be defined once within the program code with respect to the parameters to be set and / or the associated parameter values, etc. The program cycles may be executed by referring to the respective names of the program cycles within the program code. Thus, a particular program cycle may include the same parameters, particularly parameter values, for the overall synthesis of the oligonucleotide even when performed multiple times in the synthesis. However, as an example, the parameter values of the parameters may be assigned different parameter values in different program cycles such that the parameter values of the parameters may differ in different executions of the program cycle even if the parameters of the program cycle are completely or partially the same.
[0033] As used herein, the term "sequence of synthesis cycles" is a broad term and should be given its ordinary and customary meaning to one of ordinary skill in the art and should not be limited to a special or particular meaning. Specifically, this term can refer to, but is not limited to, any timely arrangement of sequence cycles as specified above in this specification. The sequence of synthesis cycles, in one embodiment, includes at least one initiation cycle followed by at least one elongation cycle, as specified above in this specification. As will be understood by one of ordinary skill in the art, the number of elongation cycles typically corresponds to the number of nucleotide moieties in the desired oligonucleotide minus one.
[0034] As used herein, the term "sequentially" is a broad term and should be given its ordinary and customary meaning to one of ordinary skill in the art and should not be limited to a special or particular meaning. Specifically, this term can refer to, but is not limited to, the ordered execution of a plurality of process steps. Sequentially performing a plurality of process steps, for example, sequentially synthesizing an oligonucleotide using a sequence of synthesis cycles, may include performing the process steps, specifically the synthesis cycles, one after another in a given order. For example, if a process includes process steps A, B, and C that are executed in a given order, sequentially executing this process may include first executing process step A, then executing process step B, and then executing process step C. The process steps may or may not overlap in a timely manner with each other. After the previous process step is completed, the next process step may be initiated.
[0035] This method, by way of example, may include the following steps and may be executed in a given order. However, it should be noted that different orders are also possible. Furthermore, it is possible to execute one, two or more, or all of the method steps once or repeatedly. Additionally, it is possible to execute two or more method steps simultaneously or overlapping in time. This method may include further method steps not listed.
[0036] This method comprises i. applying an automatic parsing procedure to the program code of a synthetic computer program, the automatic parsing procedure including automatically searching for parameter values of at least one predetermined list of parameters of interest in the program cycle of the synthetic computer program; ii. automatically constructing a parameter matrix including the parameters of interest and the corresponding parameter values of the parameters of interest for the program cycle of the synthetic computer program.
[0037] As used herein, the term "syntax analysis procedure" is a broad term and should be given its ordinary and customary meaning to those skilled in the art and should not be limited to a special or particular meaning. Specifically, this term may refer to, but is not limited to, the process of analyzing program code to identify one or more contents of the program code and / or to analyze the program code into its components. The syntax analysis procedure may include analyzing the program code for at least one of a specific instruction included in the program code, a specific parameter included in the program code, and a specific parameter value included in the program code. The syntax analysis procedure may include splitting the program code into individual instructions. Specifically, the syntax analysis procedure may take the program code as input and output the parsed instructions included in the program code. The syntax analysis procedure may include pattern matching, for example, pattern matching to find predefined instructions within the program code. The syntax analysis procedure may further include extracting items of information from the program code related to the parsed instructions as, for example, parameters and / or parameter values set for an automatic synthesis device. As an example, many programming languages such as Python include a plurality of syntax analysis commands that identify specific components of data such as strings, for example, text strings. When the program code is regarded as a text string, as an example, the syntax analysis procedure may include identifying the contents of a specific position in the program code, such as identifying specific parameters and / or specific parameter values of the program code by using the syntax analysis commands. As an example, even if the program cycles of a computer program are different, specific parameters and / or specific parameter values may be identifiable by searching for specific keywords within the program code, as outlined in more detail below. Additionally or alternatively, other syntax analysis strategies may be used.
[0038] As described above, the program code may include a header and a text section following the header. The method may include automatic detection of the text section within the program code. The automatic syntax analysis procedure in step i may specifically be executed on the text section.
[0039] The syntax analysis procedure may be executed on the complete program code of the composite program, such as a program file, or one or more parts thereof. Also, the syntax analysis procedure may syntax analyze only a part of the program cycle of the composite computer program, such as a program cycle including a predetermined keyword or parameter value.
[0040] The term "parameter" as used herein is a broad term and should be given its ordinary customary meaning to those skilled in the art and should not be limited to a special meaning or a particular meaning. Specifically, this term may refer to, but is not limited to, variable and / or adjustable settings of a process and / or an apparatus. Specifically, the parameter may be variable and / or adjustable by a control means, for example by computer control. The parameter may be a continuous parameter such as flow rate, pressure, level, temperature, time, or a discrete parameter such as the state of a valve, a pump or a flow restrictor. The program code including instructions for setting parameters in the automatic synthesizing apparatus may include a plurality of parameters, specifically a plurality of different parameters. The parameters within the program code may be associated with units, specifically units explicitly defined within a block of the program code, or units defined by reference to another explicit definition of units within another block of the program code.
[0041] As used herein, the term "parameter value" is a broad term and should be given its ordinary and customary meaning to those skilled in the art and should not be limited to a special or particular meaning. Specifically, this term may refer to, but is not limited to, a numerical and / or alphanumeric representation of a parameter. Specifically, a parameter value may be a numerical and / or alphanumeric representation of a parameter included in program code. For example, the parameter may include flow rate, pressure, level, temperature, etc. The parameter value may be a numerical representation of the flow rate, pressure, level or temperature set in the automatic synthesis device. As another example, the parameter may include the state of a valve, pump, or flow restrictor. The parameter value may be a numerical representation of the state of a valve, pump, or flow restrictor, such as "0" or "1", and / or a numerical representation of the valve position. Alternatively, the parameter value may be an alphanumeric representation of the state of a valve, pump, or flow restrictor, such as "on" or "off". The parameter value may also indicate a specific reagent or solvent used in the automatic synthesis device. Thus, the parameter value may include a representation of a reagent or solvent such as compounds "A", "B", "C", etc.
[0042] As used herein, the term "parameter of interest" is a broad term and should be given its ordinary and customary meaning to those skilled in the art and should not be limited to a special or particular meaning. Specifically, this term may specifically refer to, but is not limited to, the parameter being searched for. One or more parameters of interest may be predefined, for example, by a method of validating the program code itself and / or by the user starting a method of validating the program code. Specifically, the parameter of interest may include one or more parameters searched for by an automatic parsing procedure, specifically predefined parameters. The parameter of interest may specifically affect the synthesis of at least one oligonucleotide. Thus, the parameter of interest may include specific settings in an automatic synthesizer that affect the synthesis of oligonucleotides. The parameter of interest may be defined and / or known before the automatic parsing procedure, especially so that the parameter of interest can be collected in a predetermined list.
[0043] As used herein, the term "predetermined list" is a broad term and should be given its ordinary and customary meaning to those skilled in the art and should not be limited to a special or particular meaning. Specifically, this term may specifically refer to, but is not limited to, a set of predefined items. The predefined may be performed before starting the verification method, or may be performed during the method of verifying itself, for example, by interaction with the user, such as a computer request to the user to input or select the components of the list. Specifically, the predetermined list of parameters of interest may include a set of predefined parameters of interest. However, especially if the predefined is also performed after the start of the method, the predetermined list of parameters of interest may specifically be defined before the execution of the automatic parsing procedure.
[0044] A predetermined list of parameters of interest may include at least one parameter of interest selected from the group consisting of the type of chemical substance (especially reactants and / or solvents), the volume of chemical substance (especially reactants and / or solvents), the flow rate of chemical substance (especially reactants and / or solvents), the temperature of chemical substance (especially reactants and / or solvents), the pump pressure of at least one pump, the length of the synthetic computer program (especially the length of the synthetic cycle, e.g., the length in minutes and / or milliliters of the synthetic cycle), and the duration of the synthetic computer program (especially the duration of the synthetic cycle).
[0045] Furthermore, in the automatic parsing procedure, a list of keywords may be constructed corresponding to the list of parameters of interest. The keywords in the list of keywords may be known to be used together with the corresponding parameters of interest in the list of parameters of interest within the program code of the synthetic computer program. The parameter values of the parameters of interest may be known to be located at a predetermined relative position with respect to the keywords within the program code. The automatic parsing procedure may further include reading the corresponding parameter values of the parameters of interest from the predetermined relative position of the corresponding keywords. As outlined above, many computer languages, such as Python, provide commands that enable searching for data such as text strings for specific keywords and reading information located at a predefined position for the identified keywords, such as parameter values known to be at a predefined offset from the keyword, e.g., at a predefined position relative to the keyword.
[0046] For example, the list of keywords may include one or more of the following keywords. - For example, the keyword "block" for reading a call to a specific block of the program code or subroutine. - For example, the keyword "base" for reading the unit of the parameter set in the current block of the program code, such as volume, pressure, etc. - For example, the keyword "amidite" for reading the amidite set in the current block of the program code. - For example, the keyword "flow_AB" for reading the flow rate values of pumps A and B, for example, setting the flow rate of pump A to 0.1 ml / min and the flow rate of pump B to 0.8 ml / min, "Flow_AB 0.1{ml / min}, 0.8{ml / min}". - For example, the keywords "solvent_A" and / or "solvent_B" for reading the solvents of pumps A and / or B. - For example, the keyword "V" for reading valve setting values, for example, setting valve number 5 to position number 2 as "V5 2".
[0047] However, additional keywords may be possible.
[0048] As used herein, the term "construct" is a broad term and should be given its general and ordinary meaning to one of ordinary skill in the art and should not be limited to a special or particular meaning. Specifically, this term can refer, but is not limited to, to the process of combining a plurality of information items, specifically from different locations, into a single information item and / or a single location. Specifically, the process of constructing may include one or more intermediate process steps. For example, constructing may include collecting a plurality of information items from one or more information sources, specifically from program code. Thus, constructing may include searching for information items within a complex entity, for example, program code in this case, and collecting these information items. For example, this may be done by allocating these information items to a specific area of data storage, visualizing these information items in a specific way, allocating these information items to one or more dedicated variables, etc. Constructing may further include rearranging the collected information items in a given and / or predefined order. Constructing may further include providing a single combined information item, such as by displaying the single combined information item to a user. In particular, constructing may include combining interest parameters and corresponding parameter values into a single information item, specifically a parameter matrix.
[0049] As used herein, the term "parameter matrix" is a broad term and should be given its ordinary and customary meaning to those of ordinary skill in the art and should not be limited to a special or particular meaning. Specifically, this term may refer to, but is not limited to, any one-dimensional, two-dimensional, or multi-dimensional array or table of parameters or parameter values. Specifically, the parameter matrix may be a rectangular and / or two-dimensional array or table of parameters arranged in rows and columns. Among them, as an example, the rows may represent program cycles, the columns may represent specific parameters of the parameter of interest, or vice versa. Other notations are also possible.
[0050] Also, in one embodiment, the parameter matrix may be a representation of a method step, such as a list, that includes the aforementioned parameters and / or parameter values. Also, in one embodiment, the parameter matrix includes additional information, particularly regarding the result of a comparison between the parameter matrix and a reference matrix of parameters, and in one embodiment, the reference matrix of parameters is a matrix of predefined parameters and / or their values, such as the intended parameters and / or their values, or, in a further embodiment, the reference matrix of parameters is a representation of a method step, such as a list, that includes the aforementioned parameters and / or parameter values, the desired method, the previously used method, or the comparison method. Thus, in one embodiment, the parameter matrix includes a comparison between the above matrix of parameters and the reference matrix of parameters, and the comparison may be provided, for example, by highlighting the differences between the parameter matrix and the reference matrix of parameters, or by printing, and when the differences are identified, by displaying the parameters and / or parameter values from the parameter matrix and the reference matrix of parameters. Also, in one embodiment, such identified differences are applied to an automatic validity check as specified elsewhere in this specification.
[0051] Also, in one embodiment, step iii may automatically display on a display a representation of a method step including further information, particularly the result of a comparison of a method step against a reference list of method steps. In one embodiment, the reference list of method steps is a matrix of predefined method steps, parameters, and / or their values, such as intended parameters and / or their values. That is, in a further embodiment, the reference list of method steps is a representation of method steps including the aforementioned parameters and / or parameter values, a desired method, a previously used method, or a comparison method, for example, the list thereof. Thus, in one embodiment, the list of method steps includes a comparison of the above list of method steps with the reference list of method steps, and the comparison may be provided, for example, by highlighting the differences between the list of method steps and the reference list of method steps, or by printing, when the differences are identified, by printing by displaying parameters and / or parameter values from the list of method steps and the reference list of method steps. Also, in one embodiment, such identified differences are applied to an automatic validity check as specified elsewhere in this specification.
[0052] When these program cycle parameters of interest have the same parameter values, the program cycle parameters of interest may be combined in the combined rows of the matrix.
[0053] The parameters of interest may be the same for at least a portion of the program cycles controlling the extended cycle, particularly all of the program cycles controlling the extended cycle, more particularly all of the program cycles, such that the matrix includes the parameter values of the same parameters of different program cycles of the program code.
[0054] The method further includes iii. automatically displaying a parameter matrix on a display.
[0055] As used herein, the term "display" is a broad term and should be given its ordinary and customary meaning to one of ordinary skill in the art and should not be limited to a special or particular meaning. Specifically, this term can refer to, but is not limited to, the process of presenting information in a visual form. As a result, the term "display" can refer to, but is not limited to, an exemplary user interface configured to present information in a visual form. In particular, a display may include at least one screen. For example, the screen may have a flat and / or uniform surface. As an example, a display may be, or may include, a flat panel display that uses the light modulation characteristics of liquid crystals, such as a liquid crystal display (LCD) such as an electro-modulated optical device. Other types of displays, such as light emitting diode (LED) displays, may also be possible. However, displaying may also be, for example, outputting information onto a permanent medium by printing.
[0056] The method is iv. applying an automatic error detection step to the parameter matrix, the automatic error detection step including subjecting the parameter matrix to at least one automatic validity check, further including applying the automatic error detection step.
[0057] As used herein, the term "error detection step" is a broad term and should be given its ordinary and customary meaning to those of ordinary skill in the art and should not be limited to a special or particular meaning. Specifically, this term can refer to, but is not limited to, a process of determining a deviation of an item of information compared to a reference item of information. Specifically, the error detection step may include determining a deviation of a parameter matrix from a reference matrix of parameters that indicates parameters and / or corresponding parameter values for a given synthesis of an oligonucleotide. Alternatively or additionally, the error correction step may include detecting a deviation of a parameter value from an optimum value within the program code. Thus, an error may include a deviation of a parameter value from an optimum value such as an optimum value for the synthesis of an oligonucleotide.
[0058] As used herein, the term "validity check" is a broad term and should be given its ordinary and customary meaning to those of ordinary skill in the art and should not be limited to a special or particular meaning. Specifically, this term can refer to, but is not limited to, the process of classifying a parameter matrix into binary classes, such as "appears valid" and "does not appear valid". For example, a validity check may include classifying parameter values included in a parameter matrix. An automatic validity check may include classifying a parameter value as "appears valid" if the parameter value is equal to or within a predetermined and / or determinable range of values. An automatic validity check may include classifying a parameter value as "does not appear valid" if the parameter value is outside a predetermined and / or determinable range of values. The range of values may be defined in absolute terms, such as by defining an upper limit and / or a lower limit. Alternatively or additionally, the range of values may be defined relative to a target value of the parameter value, such as by defining an acceptable range with respect to the target value of the parameter value. For example, if the parameter value deviates from the target value of the parameter value by 10% or less, specifically 5% or less, more specifically 1% or less, the parameter value is within the range of values. Alternatively or additionally, an automatic validity check may include classifying a pattern of the parameter matrix.
[0059] Specifically, an automatic validity check may include at least one of the following. - Comparing at least one pattern of the parameter matrix with at least one predetermined target pattern. - Detecting missing parameter values in the parameter matrix. - Detecting improper units. - Detecting parameter values outside a predetermined range. - Detecting missing rows within the matrix. - Detecting additional rows within the matrix. - Identifying parameter of interest of program cycles that are listed in different rows of the matrix that should be listed in a combined row of the matrix. - Detecting the selection of the correct reagent. - Detecting the selection of the correct solvent. - Detecting the selection of the correct starting material.
[0060] Furthermore, the automatic error detection step may include automatically outputting warning information to the user when the automatic error detection step detects an error in the program code. Additionally or alternatively, the automatic error detection step may include automatically preventing the synthetic computer program from being executed on the automatic synthesis apparatus when the automatic error detection step detects an error in the program code. The warning information may specifically include at least one of the type of error in the program code, the location of the error in the program code, the identification of the program cycle in which the error occurred, and the identification of the parameter of interest in which the error occurred.
[0061] As described above, the automatic error detection step may also include automatically preventing the synthetic computer program from being executed on the automatic synthesis apparatus. For this reason, when an error is detected, a signal may be automatically generated that causes the automatic synthesis apparatus to be in a state where it cannot automatically execute the synthetic computer program. The above state may allow for manual override by the user, for example after manual error correction, or in one embodiment, may allow the execution of the synthetic computer program only after the method of verifying the program code is executed again without detecting an error.
[0062] In the automatic error detection step, at least one of the following errors may be detected: incorrect units of parameters, omitted settings of at least one chemical substance (especially at least one reactant and / or at least one solvent), incorrect settings of at least one valve, and the flow of at least one chemical substance (especially at least one reactant and / or at least one solvent) that is not set to zero at the end of the program code.
[0063] The method is It may further include an automatic error correction step of automatically correcting at least one error of the program code detected in the automatic error detection step.
[0064] As used herein, the term "error correction step" is a broad term and should be given its ordinary customary meaning to those skilled in the art and should not be limited to a special or particular meaning. Specifically, this term may refer to, but is not limited to, the process of adjusting program code. The automatic error correction step may include, for example, by being classified as "presumed valid", adjusting the program code, specifically the instructions within the program code, so that the resulting parameter matrix passes the automatic validity check. Thus, the automatic error correction step may include identifying instructions within the program code related to the deviation of the parameter matrix and further replacing the identified instructions with corrected instructions. The automatic error correction step may be automatically executed, in particular, by at least one computer, especially without manual operations and / or interaction with the user, so that the automatic error correction step is at least partially executed, especially as defined above. Alternatively or additionally, the error correction step may include adjusting the program code by optimizing the detected deviation of the parameter values within the program code. Specifically, if the deviation of the parameter value from the optimal value can be detected in the automatic error detection step, the error correction step may specifically include optimizing the parameter value by minimizing the deviation of the parameter value compared to the optimal value.
[0065] Also, in one embodiment, the method may further include vi. automatically calculating the total required amount of at least one reagent based on the above parameter values.
[0066] As used herein, the term "required amount" is a broad term and should be given its ordinary and customary meaning to one of ordinary skill in the art and should not be limited to a special or particular meaning. Specifically, this term can refer to the amount of reagent required to complete a specified number of program cycles as specified herein. Thus, the "total required amount" referred to herein relates to the amount of reagent required to complete a synthesis controlled by a synthetic computer program, i.e., for example, to synthesize an oligonucleotide. As will be understood by one of ordinary skill in the art, the amount of reagent may be calculated as volume, weight or mass, amount of substance, etc. Also, in one embodiment, the calculated total required amount may be presented to the operator of an automated synthesizer to ensure that sufficient reagent is prepared, for example, for a planned synthesis, or, in one embodiment, the calculated total required amount may be automatically interfaced to an automated pipetting device.
[0067] Specifically, the method may be computer-implemented. As used herein, the term "computer-implemented" is a broad term and should be given its ordinary and customary meaning to one of ordinary skill in the art and should not be limited to a special or particular meaning. Specifically, this term can refer to, but is not limited to, a feature of a method that includes at least one computer. The computer may include at least one processor configured to perform at least one of the method steps of the method according to the invention. Preferably, each of the method steps may be performed by a computer. The method may be performed completely automatically, specifically without interaction with a user.
[0068] As can be understood from the specifications provided herein, the method for verifying program code may be implemented on a computer that is part of an automated synthesizer. However, the method for verifying program code may be computer-implemented on a stand-alone computer that can be connected to the automated synthesizer via data transfer means.
[0069] In a further aspect of the present invention, a computer program is disclosed, which, when the program is executed by a computer or a computer system, causes the computer or the computer system to verify the program code of a synthetic computer program according to the present invention, specifically, according to any one of the embodiments disclosed above, and / or according to any one of the embodiments disclosed in more detail below, etc., such as the method according to the present invention. The computer program includes instructions for performing the method.
[0070] For the definition and embodiments of the computer program, refer to the definition and embodiments of the method for verifying the program code of the synthetic computer program described above.
[0071] In a further aspect of the present invention, a computer-readable storage medium, specifically a non-transitory computer-readable storage medium, is disclosed, which, when the instructions are executed by a computer or a computer system, causes the computer or the computer system to verify the program code of a synthetic computer program according to the present invention, specifically, according to any one of the embodiments disclosed above, and / or according to any one of the embodiments disclosed in more detail below, etc., such as the method according to the present invention. The computer-readable storage medium includes instructions for performing the method.
[0072] For the definition and embodiments of the computer-readable storage medium, refer to the definition and embodiments of the method for verifying the program code of the synthetic computer program described above.
[0073] As used herein, the term "computer-readable storage medium" may specifically refer to non-transitory data storage means such as a hardware storage medium storing computer-executable instructions. A computer-readable storage medium may specifically be, or may include, a storage medium such as random access memory (RAM) and / or read-only memory (ROM). Accordingly, the term "non-transitory" as used herein may refer to, but is not limited to, the characteristic of a computer-readable storage medium configured to persistently store computer-executable instructions. Thus, this characteristic of a computer-readable storage medium may also be referred to as "non-transitory".
[0074] In a further aspect of the invention, a system for verifying the program code of a synthetic computer program is disclosed. As used herein, the term "system" is a broad term and should be given its ordinary and customary meaning to one of ordinary skill in the art and should not be limited to a special meaning or a particular meaning. Specifically, this term may refer to, but is not limited to, any set of interactive or interdependent components that form a whole. Specifically, the components may interact with each other to perform at least one common function. At least two components may be handled independently, or may be combined or connectable.
[0075] The system includes at least one processor as defined above. The processor is configured by programming, in particular by software programming, to execute a method according to the invention, specifically a method for verifying the program code of a synthetic computer program according to the invention, such as according to any one of the embodiments disclosed above and / or according to any one of the embodiments disclosed in more detail below.
[0076] For further definitions and embodiments of the system, reference is made to the definitions and embodiments of the method for verifying the program code of the synthetic computer program described above.
[0077] In a further aspect of the invention, a method for synthesizing at least one oligonucleotide is disclosed.
[0078] The method for synthesizing at least one oligonucleotide includes, by way of example, the following steps that may be carried out in a given order. However, it should be noted that different orders are possible. Further, it is possible to carry out one, two or more, or all of the method steps once or repeatedly. Additionally, it is possible to carry out two or more method steps simultaneously or overlapping in time. The method may include further method steps not listed.
[0079] The method for synthesizing at least one oligonucleotide a. providing program code of a synthesis computer program, wherein the synthesis computer program is configured to computer control at least one automated synthesizer, and the synthesis computer program has a plurality of program cycles for computer controlling the automated synthesizer to sequentially synthesize an oligonucleotide using a sequence of synthesis cycles, b. applying a method for verifying the program code according to the invention, such as according to any one of the embodiments disclosed above and / or according to any one of the embodiments disclosed in more detail below, c. computer controlling at least one automated synthesizer to automatically synthesize at least one oligonucleotide.
[0080] For the definition and embodiments of the method for synthesizing at least one oligonucleotide, reference is made to the definition and embodiments of the method for verifying the program code of the synthesis computer program described above.
[0081] The method may, prior to step c, d. Optionally, further include at least one correction step, including correcting at least one parameter value of at least one parameter of interest according to at least one result in step b.
[0082] In step c, at least one automated synthesis device may be used. Embodiments of the automated synthesis device have been described above herein. Step c may include computer controlling at least a switchable valve, at least one pump, and / or additional units optionally present in the automated synthesis device described above herein. In one embodiment, step c includes performing at least one initiation cycle and at least one elongation cycle, however step c may also include performing at least two elongation cycles, for example, if the method does not require the attachment of a first nucleoside to a solid support, or if the solid substrate includes a suitable attachment moiety.
[0083] Furthermore, the present invention also relates to a method for verifying the program code of a synthesis computer program, the synthesis computer program being configured to computer control an automated synthesis device to automatically synthesize at least one biopolymer, the synthesis computer program having a plurality of program cycles for computer controlling the automated synthesis device to sequentially synthesize a biopolymer using at least one sequence of synthesis cycles, the method comprising i. applying an automatic syntax analysis procedure to the program code of the synthesis computer program, the automatic syntax analysis procedure including automatically searching for parameter values of at least one predetermined list of parameters of interest in the program cycles of the synthesis computer program; ii. automatically constructing a parameter matrix including the parameters of interest and the corresponding parameter values of the parameters of interest for the program cycles of the synthesis computer program.
[0084] A method for verifying the program code of a synthetic computer program, the synthetic computer program being configured to computer-control an automated synthesizer to automatically synthesize at least one biopolymer, the definitions and embodiments having been described hereinabove for a method for verifying the program code of a synthetic computer program, the synthetic computer program being configured to computer-control an automated synthesizer to automatically synthesize at least one oligonucleotide with necessary modifications.
[0085] As used herein, the term "biopolymer" is a broad term and should be given its ordinary and customary meaning to one of ordinary skill in the art and should not be limited to a special or particular meaning. Specifically, this term can refer to any molecule containing a number of units, and in embodiments consisting of molecules, at least two of which are not identical in one embodiment, but is not limited thereto. In one embodiment, the biopolymer is chemically synthesized within an automated synthesizer, i.e., in one embodiment, it is not synthesized within a biological system such as a cell or an in vitro transcription and / or translation system. In one embodiment, the biopolymer is synthesized by solid-phase synthesis. The biopolymer may be an oligonucleotide or a peptide, in one embodiment an oligonucleotide, and in a further embodiment a peptide.
[0086] As used herein, the term "peptide" is a broad term and should be given its ordinary and customary meaning to those skilled in the art and should not be limited to a special or particular meaning. Specifically, this term can refer to, but is not limited to, any molecule containing at least one peptide bond. In one embodiment, the peptide contains 2 to 100 amino acid units, in one embodiment 3 to 50 amino acid units, and in a further embodiment 4 to 25 amino acid units. In one embodiment, the amino acid units are alpha-amino acids, and in a further embodiment L-alpha-amino acids, but modified amino acids and / or D-amino acids and / or non-alpha amino acids may also be used as well. Methods for synthesizing peptides are known in the art. See, for example, the Wikipedia entry for "Peptide synthesis" as of May 24, 2022.
[0087] The methods, computer programs, computer-readable storage media, and systems according to the present invention provide numerous advantages over similar kinds of known methods and apparatuses. Specifically, the methods, computer programs, computer-readable storage media, and systems can provide means for verifying the program code of a synthesis program for synthesizing at least one oligonucleotide. Errors in the program code can be easily detected and can alert the user.
[0088] Thus, as an example, the method of verifying program code may specifically be a computer-implemented method, may use the program code of a synthetic computer program as input, and may specifically generate, fully or at least partially automatically, an output from the input that includes a parameter matrix including the parameter of interest and the corresponding parameter values of the parameter of interest. As a result, no matter how complex the synthetic computer program and the corresponding program code are, including a large number of parameters and program cycles, the method can automatically generate an information item in the form of a parameter matrix from the program code, and the parameter matrix can be easily checked by the user or even automatically for validity. Thus, the method automatically reduces the complexity of the program code of the synthetic computer program to a parameter matrix including the parameter of interest. Thus, the evaluation of the accuracy of the synthetic computer program and the corresponding program code can be reduced to the evaluation of the accuracy of the parameter matrix. Thereby, the efficiency of the verification of the computer program by a human user or automatically, as well as the reliability of the verification, can be significantly enhanced. Instead of checking the entire and often complex program code, including many iterations, routines, and subroutines, for the presence of specific parameters and / or the accuracy of the parameter values of specific parameters, the method can reduce the task of checking the parameter matrix. The parameter matrix may be visualized for human control and / or may undergo at least one automatic error detection step, which is significantly simplified and requires significantly fewer resources compared to error detection of the "raw" program code.
[0089] Specifically, the parameter matrix may provide a clear and compact visualization of the parameters and corresponding parameter values in the automated synthesis apparatus. The program code itself or the user interface is generally complex and unclear. Therefore, errors in the program code can be easily detected and corrected, either manually or automatically. Thus, the method, computer program, computer-readable storage medium, and system may be suitable for providing robust and reliable automated synthesis of oligonucleotides.
[0090] Furthermore, a method for verifying the program code of a synthesis computer program may enable sequentially passing through all steps of the procedure, specifically all instructions included in the program code, and tracking changes in reagents, solvent flow rates, volumes, and / or time. At the end of each operation, for example when the flow stops, for two or more pumps of the automated synthesis apparatus, the parameter values of the parameters of interest can be summarized in a parameter matrix for parameters such as reagents, amounts, flow rates, and time. The constructed parameter matrix can group all parameter values of each operation by cycle number and thus can be presented and displayed to the user in an easy and comprehensive manner. Furthermore, the parameter matrix can be compared with a given synthesis plan and / or parameter matrix to detect errors in the program code. Visualization by graph may be used to easily detect deviations in values and / or patterns.
[0091] In general, although it is also applicable to other synthetic computer programs configured to computer-control other types of synthesis other than the automated synthesis of oligonucleotides, the present method is particularly advantageous for the synthesis of oligonucleotides. This is particularly due to the fact that the synthesis of oligonucleotides typically involves a sequence of the same or similar types of synthesis cycles as described above. In each cycle, by way of example, the desired oligonucleotide can be sequentially constructed or synthesized by adding nucleotides to the growing sequence. In this case, even if the chemical process involves a plurality of synthesis cycles of generally similar or identical chemical properties, the synthetic computer program and the corresponding program code can be quite complex. However, the method proposed herein can significantly reduce the effort required for verifying the program code because a predetermined list of parameters of interest can reflect the decision parameters of the program cycle. As a result, the repetitive nature of the chemical process of oligonucleotide synthesis can be used to reduce the complexity of verifying the program code of the corresponding synthetic computer program. Further, the method of verifying the program code of a synthetic computer program may also be used to automatically fill gaps in the program code from a parameter matrix, for example, to complete an incomplete program code. This can further reduce human resource requirements and reduce errors.
[0092] Also, in one embodiment, the present invention relates to a method of verifying at least two sets of program codes of a synthetic computer program, each synthetic computer program being configured to computer-control an automated synthesizer (114) to automatically synthesize at least one oligonucleotide, each synthetic computer program having a plurality of program cycles for computer-controlling the automated synthesizer (114) to sequentially synthesize an oligonucleotide by using at least one sequence of synthesis cycles, and the method comprising (I) Applying an automatic syntax analysis procedure to each of the program codes of the synthetic computer program, the automatic syntax analysis procedure including automatically searching for parameter values of at least one predetermined list of parameters of interest in the program cycle of the synthetic computer program, and the applying (II) For each program cycle of each synthetic computer program, automatically constructing a verification matrix of parameters including (i) a parameter of interest and a corresponding parameter score of the parameter of interest, or (ii) a structured array of parameter scores of the parameter of interest (III) Comparing the pattern of the verification matrix of parameters with at least one predetermined target pattern
[0093] The method for verifying a set of at least two program codes of the present invention may include steps in addition to those explicitly described above. For example, a further step may relate to automatically displaying a list of synthetic computer programs in which a deviation from a predetermined target pattern is detected in step (III).
[0094] As used herein, the term "verification matrix of parameters" is a broad term and should be given its general and ordinary meaning to those skilled in the art and should not be limited to a special or particular meaning. Specifically, in one embodiment of all the program codes of a given set of synthetic computer programs, this term may refer to the parameter matrix specified above herein, which includes parameters and / or parameter scores of at least two program codes of the synthetic computer program. As will be understood by those skilled in the art considering the description herein, the verification matrix of parameters may, for example, in one embodiment, include at least one parameter assigned to the value of the above parameters in the synthetic computer program, which is within a structured array, or may include a parameter matrix as specified above herein for each of the above synthetic computer programs, or may include a structured array of parameter scores of the above parameters as specified below herein.
[0095] The term "parameter score" as used herein is a broad term and should be given its usual and customary meaning to those skilled in the art and should not be limited to a special or particular meaning. Specifically, this term can refer to any representation of a parameter value or range of parameter values. Such a representation may be, for example, a symbol, a number not necessarily corresponding to a parameter value, a character, etc., especially when the result of step (II) is output to the user. Alternatively, it may be any internal state of a microprocessor and / or a data storage device that enables an unambiguous assignment and comparison of parameter scores. In one embodiment, the parameter score is a parameter value.
[0096] As used herein, the term "structured array of parameter scores" is a broad term and should be given its ordinary and customary meaning to those of ordinary skill in the art and should not be limited to a special or particular meaning. Specifically, this term may refer to an array of parameter scores in which the scores of a given parameter are arranged at predetermined positions within the array. Thus, in a structured array of parameter scores, each parameter score can be clearly assigned to its corresponding parameter based on its position within the array. Thus, in one embodiment, the structured array of parameter scores is a simplified representation of parameter / parameter score data.
[0097] As used herein, the term "verifying at least two sets of program code" is a broad term and should be given its ordinary and customary meaning to those skilled in the art and should not be limited to a special or particular meaning. Specifically, this term may refer to the verification steps and / or parameters of a set of program code, and in one embodiment, may refer to verifying the parameters of a set of program code. Thus, in one embodiment, the program code of a set of program code is compared with each other and / or with a reference program code, and a verification matrix of the parameter of interest is established. Such a verification matrix of the parameter may include the parameter of interest and the corresponding parameter score of the parameter of interest, for example, in the form of a list or a table. Alternatively, the above verification matrix of the parameter may include a structured array of the parameter scores of the above parameters of interest, as described above herein. Thus, step (III) may, in one embodiment, automatically include comparing the verification matrix of the parameter obtained in step (II) with a target pattern, for example, a set of target matrices of the parameter, or a target structured array. In one embodiment, step (III) includes comparing a list of structured arrays obtained in step (II) with a target list of structured arrays. In one embodiment, the target pattern is a combined design of experimental patterns. In one embodiment, the comparison in step (III) is part of an automatic validity check as specified elsewhere in this specification. Also, in one embodiment, if a difference between the verification matrix of the parameter and a predetermined target pattern is identified, the execution of the at least two sets of program code of the synthetic computer program is automatically prevented or stopped, and / or a warning is displayed. In summary, without excluding further possible embodiments, the following embodiments may be envisioned.
[0098] Embodiment 1: A method for verifying the program code of a synthetic computer program, wherein the synthetic computer program is configured to computer-control an automatic synthesizer to automatically synthesize at least one oligonucleotide, and the synthetic computer program has a plurality of program cycles for computer-controlling the automatic synthesizer to sequentially synthesize oligonucleotides using at least one sequence of a synthesis cycle. The method includes: i. applying an automatic syntax analysis procedure to the program code of the synthetic computer program, the applying including automatically searching for parameter values of at least one predetermined list of parameters of interest in the program cycle of the synthetic computer program; ii. automatically constructing a parameter matrix including the parameters of interest and the corresponding parameter values for the program cycles of the synthetic computer program; The method includes the above.
[0099] Embodiment 2: The method according to the preceding embodiment, wherein the synthesis cycle includes at least two extension cycles in which nucleotide residues are added to the oligonucleotide chain.
[0100] Embodiment 3: For at least a part of the program cycles that control the extension cycle, specifically all the program cycles that control the extension cycle, more specifically for all the program cycles, the parameters of interest are the same. As a result, the matrix includes the parameter values of the same parameters of different program cycles of the program code. The method according to the preceding embodiment.
[0101] Embodiment 4: In the automatic syntax analysis procedure, a list of keywords is constructed corresponding to the list of parameters of interest, and the keywords in the list of keywords are known to be used together with the corresponding parameters of interest in the list of parameters of interest in the program code of the synthetic computer program, and the parameter values of the parameters of interest are known to be located at a predetermined relative position with respect to the keywords in the program code, and the automatic syntax analysis procedure further includes reading the corresponding parameter values of the parameters of interest from the predetermined relative position of the corresponding keywords. The method according to any one of the preceding embodiments.
[0102] Embodiment 5: iii. The method according to any one of the preceding embodiments, further including automatically displaying the parameter matrix on a display.
[0103] Embodiment 6: When the parameters of interest of the program cycle have the same parameter values, the parameters of interest of the program cycle are combined in the combined rows of the matrix. The method according to any one of the preceding embodiments.
[0104] Embodiment 7: A predetermined list of parameters of interest includes at least one parameter of interest selected from the group consisting of the type of chemical substance (especially reactant and / or solvent), the volume of chemical substance (especially reactant and / or solvent), the flow rate of chemical substance (especially reactant and / or solvent), the temperature of chemical substance (especially reactant and / or solvent), the pump pressure of at least one pump, or the length of a specific synthesis step (e.g., the length of a recycle step for Y minutes at a specific flow rate X). The method according to any one of the preceding embodiments.
[0105] Embodiment 8: iv. Applying an automatic error detection step to the parameter matrix, the automatic error detection step including subjecting the parameter matrix to at least one automatic validity check. The method according to any one of the preceding embodiments, further including applying the automatic error detection step.
[0106] Embodiment 9: The automatic validity check includes - comparing at least one pattern of the parameter matrix with at least one predetermined target pattern - detecting missing parameter values in the parameter matrix, - detecting incorrect units, - detecting parameter values outside a predetermined range, - detecting missing rows in the matrix, - detecting additional rows in the matrix, - identifying interesting parameters of program cycles that are listed in different rows of the matrix but should be listed in combined rows of the matrix, - detecting the selection of the correct reagent, - detecting the selection of the correct solvent, - detecting the selection of the correct starting material, and includes at least one of the above, the method according to the preceding embodiment.
[0107] Embodiment 10: When the automatic error detection step detects an error in the program code, the method further includes (I) automatically outputting warning information to the user and / or (II) automatically preventing the synthesis computer program from being executed on the automatic synthesis device (114), according to any one of the two preceding embodiments.
[0108] Embodiment 11: The warning information includes at least one of the type of error in the program code, the location of the error in the program code, the identification of the program cycle in which the error occurred, and the identification of the interesting parameter in which the error occurred, according to the preceding embodiment.
[0109] Embodiment 12: The method according to any one of the preceding four embodiments, wherein in the automatic error detection step, at least one of the following errors is detected: incorrect units of parameters, omitted settings of at least one chemical substance (particularly at least one reactant and / or at least one solvent), incorrect settings of at least one valve, and the flow of at least one chemical substance (particularly at least one reactant and / or at least one solvent) not set to zero at the end of the program code.
[0110] Embodiment 13: The method according to any one of the preceding five embodiments, further comprising an automatic error correction step of automatically correcting at least one error in the program code detected in the automatic error detection step.
[0111] Embodiment 14: The method according to any one of the preceding embodiments, wherein the parameter matrix optionally includes a comparison of the parameter matrix with a reference matrix of parameters by highlighting the difference between the parameter matrix and the reference matrix of parameters.
[0112] Embodiment 15: The method according to any one of the preceding embodiments, wherein step iii. is to automatically display on a display a representation of a method step including a comparison between the method step and a reference list of method steps.
[0113] Embodiment 16: The method according to any one of the preceding embodiments, further comprising automatically calculating the total required amount of at least one reagent based on the parameter value.
[0114] Embodiment 17: A method for verifying a set of at least two program codes of a synthetic computer program, wherein each synthetic computer program is configured to computer-control an automatic synthesizer (114) to automatically synthesize at least one oligonucleotide, and each synthetic computer program has a plurality of program cycles for computer-controlling the automatic synthesizer (114) to sequentially synthesize oligonucleotides using at least one sequence of a synthesis cycle. The method comprises: (I) applying an automatic syntax analysis procedure to each of the program codes of the synthetic computer program, the automatic syntax analysis procedure including automatically searching for parameter values of at least one predetermined list of parameters of interest in a program cycle of the synthetic computer program; (II) for each program cycle of each synthetic computer program, automatically constructing a verification matrix of parameters including (i) the parameter of interest and the corresponding parameter score of the parameter of interest, or (ii) a structured array of the parameter scores of the parameter of interest; (III) comparing the pattern of the verification matrix of parameters with at least one predetermined target pattern.
[0115] Embodiment 18: The method according to any one of the preceding embodiments, wherein the program code is a method file, specifically a Unicorn method file.
[0116] Embodiment 19: The method according to any one of the preceding embodiments, wherein the program code is binary program code.
[0117] Embodiment 20: The program code includes a header and a text section following the header, and the method includes automatically detecting the text section in the program code, and the automatic syntax analysis procedure in step (i) is executed on the text section. The method according to any one of the preceding embodiments.
[0118] Embodiment 21: The method according to any one of the preceding embodiments, wherein the method is implemented by a computer.
[0119] Embodiment 22: A computer program comprising instructions that, when the program is executed by a computer or a computer system, cause the computer or the computer system to execute the method according to any one of the preceding embodiments of the method.
[0120] Embodiment 23: A computer-readable storage medium, specifically a non-transitory computer-readable storage medium, comprising instructions that, when executed by a computer or a computer system, cause the computer or the computer system to execute the method according to any one of the preceding embodiments of the method.
[0121] Embodiment 24: A system for verifying the program code of a synthetic computer program, the system comprising at least one processor, the processor being configured by programming to execute the method according to any one of the preceding embodiments of the method.
[0122] Embodiment 25: A method for synthesizing at least one oligonucleotide, the method comprising: a. providing program code of a synthetic computer program, the synthetic computer program being configured to computer-control at least one automated synthesizer, the synthetic computer program having a plurality of program cycles for computer-controlling the automated synthesizer to sequentially synthesize oligonucleotides using a sequence of synthesis cycles; b. applying a method for verifying the program code according to any one of the preceding embodiments of the method; c. computer - controlling at least one automatic synthesizer to automatically synthesize at least one oligonucleotide, and a method comprising the same.
[0123] Embodiment 26: Before step c, the method d. further comprising at least one correction step including correcting at least one parameter value of at least one parameter of interest according to at least one result of step b, the method according to any one of the preceding embodiments.
[0124] Embodiment 27: The method of synthesizing according to any one of the preceding embodiments of the synthesis method, wherein the at least one oligonucleotide comprises at least one oligonucleotide selected from the group consisting of DNA oligonucleotides, RNA oligonucleotides, and LNA oligonucleotides, specifically, the oligonucleotide comprises at least 2, more specifically at least 3, and even more specifically at least 4 non - identical nucleotides.
[0125] Embodiment 28: In step c, at least one automatic synthesizer is used, the automatic synthesizer includes at least one synthesis column having at least one stationary - phase material, the automatic synthesizer further includes at least one pump and a system of switchable valves for selectively supplying chemicals (especially solvents and / or reactants) to the column, and step c includes computer - controlling at least the switchable valves and at least one pump, the method of synthesizing according to any one of the preceding embodiments of the synthesis method.
[0126] Embodiment 29: The method according to the preceding embodiment, wherein the automatic synthesizer further includes at least one additional element, and step c includes computer - controlling at least one additional element.
[0127] Embodiment 30: Further elements are an amidite pump, an amidite valve, a solvent / reagent pump, a solvent / reagent valve, a system of switchable valves for supplying liquid from a column to a predetermined container, at least one temperature control element for setting the column to at least one predetermined temperature, a column inlet valve for introducing a liquid flow into the column, a column outlet valve for introducing a liquid flow from the column, a recycle bypass, specifically, a recycle bypass for recycling liquid on the column, for example, by connecting the column outlet valve to the column inlet valve by at least one valve, a waste valve for guiding liquid from the column to at least one waste system, the method according to the preceding embodiment, selected from the group consisting of.
Brief Description of Drawings
[0128] Further optional features and embodiments are preferably disclosed in more detail in the subsequent description of the embodiments in conjunction with the dependent claims. Among them, each optional feature may be implemented in an independent aspect and any feasible combination, as can be understood by those skilled in the art. The scope of the present invention is not limited by the preferred embodiments. The embodiments are schematically shown in the figures. Here, the same reference numerals in these figures refer to the same or functionally equivalent elements.
[0129]
Figure 1
Figure 2
Figure 3
Modes for Carrying Out the Invention
[0130] Figure 1 schematically shows an exemplary embodiment of a system 110 for verifying the program code of a synthetic computer program, and an automatic synthesizer 114. The system 110 may be combined with, or coupled to, or be separate components from the automatic synthesizer 114 as shown in Figure 1. The automatic synthesizer 114 shown in Figure 1 may be an oligoPlot synthesizer commercially available from Cytiva®. However, other types of automatic synthesizers 144 are also feasible.
[0131] The system 110 includes at least one processor 112. The processor 112 is configured, in particular by software programming, to execute a method for verifying the program code of a synthetic computer program according to the invention, such as according to the exemplary embodiment shown in Figure 2 and / or according to any other embodiment disclosed herein. Therefore, for the description of the method for verifying the program code of a synthetic computer program, reference is made to the description of Figure 2.
[0132] The system 110 may further include at least one automatic synthesizer 114, or may interact with at least one automatic synthesizer 114 such that the program code of the synthetic computer program verified by the system 110 can be executed by the automatic synthesizer 114. For this purpose, the system 110 and the automatic synthesizer 114 may be fully or partially integrated with each other, may be connected by at least one interface or network, or the verified program code may be transferred to the automatic synthesizer 114 by other means such as a portable data storage device and / or wireless or wired data transfer.
[0133] The automatic synthesizer 114 may include at least one synthesis column 116 having at least one stationary phase material. Specifically, as seen in Figure 1, the automatic synthesizer 114 may include a plurality of columns 116, for example, seven or more columns 116.
[0134] The automatic synthesizer 114 may further include at least one pump 118, a connector 120 to a plurality of chemical substance sources 122, and a system of switchable valves 124 for selectively supplying chemical substances, particularly solvents and / or reactants, to the column 116. Specifically, in the exemplary system 110 shown in FIG. 1, the automatic synthesizer 114 may include amidite valves 126, 128. The amidite valves 126, 128 may supply liquid to the pump 118 via additional valves 124.
[0135] The automatic synthesizer 114 may further include a reagent valve 130. Further, the automatic synthesizer 114 may include a column inlet valve 132 for allowing the liquid flow into the column 116 and a column outlet valve 134 for allowing the liquid flow out of the column 116. As seen in FIG. 1, the column inlet valve 132 may be disposed downstream of the connector 120 and upstream of the column 116. The column outlet valve 134 may be disposed downstream of the column 116 and may connect the liquid flowing from the column 116 to a recycle valve 136. Between the column outlet valve 132 and the recycle valve 136, the automatic synthesizer 114 may include a pH meter, a conductivity sensor, and / or a combined pH-C meter 138 for monitoring the liquid flowing from the column 116. Thus, the recycle valve 136 may be configured to recycle the liquid flowing from the column 116 and / or to distribute the liquid via a waste valve 140 to direct the liquid from the column 116 to at least one waste system 142. As an example, the waste system 142 may include a UV absorption sensor 144 and a flow restrictor 146.
[0136] The automatic synthesizer 114 may further include a column bypass 148 for providing a bypass flow from the column inlet valve 132 to the column outlet valve 134.
[0137] The automated synthesizer 114 may include additional elements such as an amidite pump, a solvent / reagent pump, and / or a temperature regulating element for setting the column 116 to at least one predetermined temperature (not shown in FIG. 1).
[0138] Accordingly, the system 110 may be configured to implement a method for synthesizing at least one oligonucleotide according to the present invention, in the configuration shown in FIG. 1, by, for example, the exemplary embodiment shown in FIG. 3 and / or any other embodiment disclosed herein. Accordingly, for an explanation of the method for synthesizing at least one oligonucleotide, refer to the explanation of FIG. 3.
[0139] FIG. 2 shows a flowchart of an exemplary embodiment of a method for verifying the program code of a synthesis computer program. In the figure, the method for verifying the program code of the synthesis computer program is indicated by reference numeral 150. The synthesis computer program is configured to computer control the automated synthesizer 114 to automatically synthesize at least one oligonucleotide, and has a plurality of program cycles for computer controlling the automated synthesizer 114 to sequentially synthesize oligonucleotides using at least one sequence of a synthesis cycle.
[0140] The method may include, by way of example, the following steps that may be performed in a given order. However, it should be noted that different orders are possible. Furthermore, it is also possible to perform one, two or more, or all of the method steps once or repeatedly. Furthermore, it is possible to perform two or more method steps simultaneously or overlapping in time. The method may include additional method steps not listed.
[0141] The method is i. Applying an automatic syntax analysis procedure (indicated by reference numeral 152) to the program code of a synthetic computer program, the automatic syntax analysis procedure including automatically searching for parameter values of at least one predetermined list of parameters of interest in the program cycle of the synthetic computer program, and the applying; ii. Automatically constructing a parameter matrix including parameters of interest and corresponding parameter values thereof for the program cycle of the synthetic computer program (indicated by reference numeral 154).
[0142] This method may further include any of the following steps. iii. Automatically displaying the parameter matrix on a display (indicated by reference numeral 156). iv. Applying an automatic error detection step (indicated by reference numeral 158) to the parameter matrix, the automatic error detection step including subjecting the parameter matrix to at least one automatic validity check, and the applying; v. An automatic error correction step characterized by automatically correcting at least one error of the program code detected in the automatic error detection step (indicated by reference numeral 160).
[0143] Examples of the program code and / or the parameter matrix are specifically obtained from the program code regardless of the presence or absence of errors and are provided below.
[0144] Figure 3 shows a flowchart of an exemplary embodiment of a method for synthesizing at least one oligonucleotide. This method includes, as an example, the following steps that may be executed in a given order. However, it should be noted that different orders are also possible. Further, it is also possible to execute one, two or more, or all of the method steps once or repeatedly. Further, it is possible to execute two or more method steps simultaneously or overlapping in time. This method may include additional method steps not listed.
[0145] This method comprises: a. providing program code of a synthetic computer program (indicated by reference numeral 162), the synthetic computer program being configured to computer-control at least one automated synthesizer, the synthetic computer program having a plurality of program cycles for computer-controlling the automated synthesizer to sequentially synthesize oligonucleotides using a sequence of synthesis cycles; b. applying a method for verifying program code according to the present invention, such as the exemplary embodiment shown in FIG. 2 (indicated by reference numeral 150) and / or any other embodiment disclosed herein; c. computer-controlling at least one automated synthesizer 114 to automatically synthesize at least one oligonucleotide (indicated by reference numeral 164).
[0146] This method may further comprise: d. at least one correction step including correcting at least one parameter value of at least one parameter of interest according to at least one result of step b (indicated by reference numeral 166).
[0147] Furthermore, in step c, at least one automated synthesizer 114 shown in FIG. 1 may be used. Thus, step c may include computer-controlling at least the switchable valve 124 and the pump 118. Specifically, step c may include computer-controlling at least one of further elements such as amidite valves 126, 128, reagent valve 130, column inlet valve 132, column outlet valve 134, recycle valve 136, and / or waste valve 140.
Example
[0148] The following shows exemplary embodiments of program code (Example 1) used in a method for verifying the program code of a synthetic computer program, and a matrix of parameters (Examples 2 and 3) obtained by executing the method for verifying the program code of a synthetic computer program.
[0149] Example 1: Exemplary Program Code Example 1 relates to exemplary program code used in a method for verifying the program code of a synthetic computer program. The program code is a Unicorn method file, specifically a binary file containing the method procedure itself, device parameters, metadata, etc. The program code includes a digital header listing the names of blocks of program code having corresponding byte addresses. The sequence of instructions is displayed in the "METHOD" section and can be read as text. The program code is the main sequence of instructions, namely, MAIN_SEPARATION 0.00 Base CV,#Column_Volume {ml},Any 0.00 Block Normal,START_parameters 0.00 Block Normal,Column_wash 0.00 Block Normal,Cycle01_mGo_only_detrit 0.00 Block Normal,Cycle02_mGs 0.00 Block Normal,Cycle03_mCs [....] 0.00 Block Normal,Cycle21_fU 0.00 Block Normal,Cycle22_pUs_no_cap_detrit 0.00 Block Normal,Backbone_deprotection 0.00 Block Normal,Method_end 0.00 End_Method END_SEPARATION
[0150] Furthermore, the program code includes the definition of a block of program code referenced in the main procedure, SUB_SEPARATION START_parameters 0.00 Base Time 0.00 Block Normal,Column_Number 0.00 Block Normal,UV_Detrit 0.00 Block Normal,Purge_Detritylation_Autozero 0.00 Scale #Weight_of_Support {g},#Loading_of_Support {umol / g} 0.00 Coldiameter #Column_Diameter {mm} 0.00 End_block END_SEPARATION SUB_SEPARATION Column_Number 0.00 Base Time 0.00 Column #Column_Number 0.10 End_Block END_SEPARATION SUB_SEPARATION UV_Detrit 0.00 Base Time 0.00 UV_Wavelength #UV_Detritylation {nm},280 {nm},OFF {nm} 0.10 End_block END_SEPARATION
[0151] Each block of program code that is referenced within the main sequence or within other blocks of program code is declared by the "SUB_SEPARATION keyword" and ends with "END_SEPARATION". For example, calling a block of program code for cycle 03 within the main procedure includes the instruction "0.0 Block Normal,Cycle03_mCs" and references the following blocks of program code included in the program code. SUB_SEPARATION Cycle03_mCs 0.00 Base Time 0.00 Set_Mark “# Cycle03 mCs #” 0.05 Block Normal,Coupling_v1_C_10min 0.05 Block Normal,Thiolation 0.05 Block Normal,Capping 0.05 Block Normal,Detritylation_Amount_6CV END_SEPARATION
[0152] Lower-level procedures or blocks of program code may reference further blocks of program code defined within the program code. Each line within a block (excluding the first and last) starts with a position mark, followed by a command and parameters. The position mark may be a time unit, e.g., minutes, a volume, e.g., milliliters, or a CV, e.g., column volume. The unit is defined by the mandatory first line within the block by the instructions "Base Time", "Base Volume", "Base CV", or "Base SameAsMain", the latter of which defines the same unit as the main procedure.
[0153] Blocks of program code are defined by name and entered into the program code once. References to blocks of program code from multiple places within the program code refer to the same entry. This means that if the program code is not sequential and the parameters within a block of program code are changed in one place, the parameters are also changed in other places where this block is called.
[0154] Example 2: Virtual Parameter Matrix Obtained from Error-Free Program Code Example 2 shows an exemplary embodiment of a virtual parameter matrix obtained by performing a method of verifying the program code of a synthetic computer program, for example, executed using the program code of Example 1. The parameter matrix in this example is obtained from error-free program code. The rows of the matrix represent program cycles, and the columns of the matrix represent parameters of interest and the corresponding parameter values of the parameters of interest. Other types of visualization are generally also executable.
[0155] [Table 1] TIFF2025522374000003.tif85164
[0156] Example 3: Virtual Parameter Matrix Obtained from Program Code with Errors Example 3 shows an exemplary embodiment of a virtual parameter matrix obtained by performing a method of verifying the program code of a synthetic computer program, for example, executed using the program code of Example 1. The parameter matrix in this example is obtained from program code containing one or more errors. In Table 2, the errors are emphasized in bold.
[0157] [Table 2] TIFF2025522374000005.tif101164
[0158] In this example, errors in the program code can be detected by performing an automatic validity check on the parameter matrix. For example, Table 3 shows exemplary errors in the program code, their effects on the synthesis of oligonucleotides, and how these errors can be detected in the parameter matrix of Table 2.
[0159]
Table 3
[0160] Thus, in this example, the automatic validity check as shown in Table 3 can detect one or more of the following errors in the parameter matrix of Table 2: extra rows that appear in the parameter matrix with incorrect values, incorrect entries in the "reactants" column of the parameter matrix, incorrect values in the parameter matrix, and the absence of the next operation next in the parameter matrix.
[0161] Example 4: Comparison and highlighting of input parameters In actual use, the synthesis computer program (synthesis program) of the synthesizer may be newly programmed. However, it is often the case that an existing synthesis program is modified to generate a new synthesis program. Therefore, for example, by comparing a previous synthesis program with a new synthesis program, it becomes easier to verify that only the parameters intended to be changed, and only the parameters intended to be changed, have been modified.
[0162] Therefore, instead of or in addition to the error highlighting as detailed in Example 3, it is also possible to select a comparison method, for example, a previously used method or a reference method, and a list of method steps of the method of interest is output, and the differences from the comparison method are highlighted, thus improving error detection.
[0163] Example 5: Reagent calculation In the method described herein, the reagent volume for a given step, as well as the number of cycles in which the reagent is used, can also be parameters of interest. From these parameters, the volume of reagent required to implement this method was automatically calculated. It will be appreciated that this calculation can be performed for one or more free bodies, auxiliary reagents, and washing reagents. Thus, in one embodiment, the required volumes of all the reagents used in this method were calculated to prevent interruption of the method caused by reagent shortage.
[0164] Example 6: Verification of a set of methods One skilled in the art will appreciate, in view of the description herein, that in, for example, method optimization, various parameters may need to be optimized, and at least some of them may be interdependent. Thus, it may be necessary to perform optimizations in a number of methods with sets of parameter combinations. In such cases, it is particularly difficult to ensure that all combinations are programmed as initially planned, for example, in a matrix of design of experiments (DOE) values.
[0165] For that purpose, in one embodiment, a structured array of parameter scores was used. Exemplarily, when a set of three parameters A, B, and C was optimized, the structured array included the score of parameter A at the first position, the score of parameter B at the second position, and the score of parameter C at the third position. Also, as an example, parameters A and B were used as low values represented by "-", medium values represented by "o", and high values represented by "+". As will be understood by those skilled in the art, the actual values or ranges represented by the foregoing symbols may differ for parameters A and B. Also, exemplarily, parameter C was used as four values represented by "1", "2", "3", and "4", respectively. Thus, the method of using a low value of parameter A, a medium value of parameter B, and the highest point of parameter C is represented by the character string "-o4". In conclusion, the target pattern of the set of methods of using all combinations of all values of a low value of parameter A, a medium value of parameter B, and parameter C in ascending order can be represented as the following target pattern. -o1 -o2 -o3 -o4
[0166] In the verification method, parameters A, B, and C are the parameters of interest, and the verification matrix of the parameters was generated for a set of programmed synthesis methods. The verification included comparing the verification matrix of the parameters with the foregoing target pattern. As will be understood, detecting a deviation from such a pattern is easier and more reliable than, for example, comparing a list of parameter lists or a list of method steps.
Description of the Signs
[0167] 110 System 112 Processor 114 Automatic Synthesis Device 116 Synthesis Column 118 Pump 120 Connector 122 Supply of Chemical Substances 124 Switchable Valve 126 Amidite Valve 128 Amidite Valve 130 Reagent Valve 132 Column Inlet Valve 134 Column Outlet Valve 136 Recycling Valve 138 pH-C-Meter 140 Waste Valve 142 Waste System 144 UV Absorption Sensor 146 Flow Limiter 148 Column Bypass 150 Method for Verifying the Program Code of a Synthetic Computer Program 152 Applying an Automatic Syntax Analysis Procedure 154 Automatically Constructing a Parameter Matrix 156 Automatically Displaying a Parameter Matrix 158 Applying an Automatic Error Detection Step 160 Automatic Error Correction Step 162 Providing the Program Code of a Synthetic Computer Program 164 Computer-Controlling an Automatic Synthesis Device 166 Correction Step
Claims
1. A method for verifying the program code of a synthetic computer program, The synthesis computer program is configured to computer-control an automated synthesis apparatus (114) to automatically synthesize at least one oligonucleotide, and the synthesis computer program has a plurality of program cycles for computer-controlling the automated synthesis apparatus (114) to sequentially synthesize the oligonucleotides using at least one sequence of synthesis cycles. The aforementioned method, i. Applying an automatic parsing procedure to the program code of the synthetic computer program, wherein the automatic parsing procedure includes automatically searching for parameter values of at least one predetermined list of parameters of interest in the program cycle of the synthetic computer program. ii. For each program cycle of the synthetic computer program, a parameter matrix is automatically constructed, which includes the parameter of interest and the corresponding parameter value of the parameter of interest. Methods that include...
2. The method according to claim 1, wherein the synthesis cycle comprises at least two extension cycles in which nucleotide residues are added to an oligonucleotide chain, and the parameters of interest are the same for at least a portion of the program cycles that control the extension cycles, such that the matrix contains the parameter values of the same parameters for different program cycles of the program code.
3. iii. The method according to claim 1, further comprising automatically displaying the parameter matrix on a display.
4. The method according to claim 1, wherein the predetermined list of parameters of interest includes at least one parameter of interest selected from the group consisting of: type of chemical substance, volume of chemical substance, flow rate of chemical substance, temperature of chemical substance, pump pressure of at least one pump (118), length of a particular synthesis step.
5. iv. Applying an automated error detection step to the parameter matrix, further comprising applying an automated error detection step which includes subjecting the parameter matrix to at least one automated validation check, the automated validation check is The pattern of the parameter matrix is compared with at least one predetermined target pattern, To detect missing parameter values in the parameter matrix, Detecting fraudulent units, Detecting parameter values outside a predetermined range, Detecting missing rows in a matrix, To detect additional rows in the aforementioned matrix, Identifying the parameters of interest of the program cycle listed in different rows of the matrix, which should be listed in the combined rows of the matrix, To detect the correct reagent selection, To detect the correct solvent selection, To detect the correct selection of starting materials, including at least one of the following: The method according to claim 1.
6. The method according to claim 5, further comprising automatically outputting warning information to the user when the automatic error detection step detects an error in the program code.
7. The method according to claim 5, further comprising automatically preventing the synthesis computer program from being executed on the automatic synthesis apparatus (114) if the automatic error detection step detects an error in the program code.
8. The method according to claim 5, wherein at least one of the following errors is detected in the automatic error detection step: an incorrect unit of the parameter, an omitted setting of at least one chemical substance, an incorrect setting of at least one valve (124), and a flow of at least one chemical substance that is not set to zero at the end of the program code.
9. v. The method according to claim 5, further comprising an automatic error correction step, which includes automatically correcting at least one error in the program code detected in the automatic error detection step.
10. The method according to claim 1, wherein the program code includes a header and a text section following the header, the method includes automatic detection of the text section in the program code, and the automatic parsing procedure of step i is performed on the text section.
11. The method according to claim 1, wherein the parameter matrix includes a comparison between the parameter matrix and the reference matrix of the parameters.
12. The method according to claim 11, wherein the comparison is performed by highlighting the difference between the parameter matrix and the parameter reference matrix.
13. The method according to claim 1, wherein step iii is to automatically display on the display a representation of the method step, which includes a comparison of the method step with a reference list of the method step.
14. The method according to claim 1, further comprising vi. automatically calculating the total required amount of at least one reagent based on the parameter value.
15. A method for verifying at least two sets of program code for a synthesis computer program, wherein each synthesis computer program is configured to computer-control an automated synthesizer (114) to automatically synthesize at least one oligonucleotide, and each synthesis computer program has a plurality of program cycles for computer-controlling the automated synthesizer (114) to sequentially synthesize the oligonucleotides using at least one sequence of synthesis cycles. The aforementioned method, (I) Applying an automatic parsing procedure to each of the program codes of the synthetic computer program, wherein the automatic parsing procedure includes automatically searching for parameter values of at least one predetermined list of parameters of interest in the program cycle of the synthetic computer program, (II) Automatically constructing a parameter validation matrix, wherein for each program cycle of the synthetic computer program, the parameter validation matrix includes (i) the parameter of interest and the corresponding parameter score of the parameter of interest, or (ii) a structured array of the parameter scores of the parameter of interest. (III) Comparing the pattern of the parameter verification matrix with at least one predetermined target pattern, Methods that include...
16. A computer program, which, when executed by a computer or computer system, includes an instruction causing the computer or computer system to perform the method described in any one of claims 1 to 15.
17. A computer-readable storage medium comprising, when the instruction is executed by a computer or computer system, an instruction causing the computer or computer system to perform the method according to any one of claims 1 to 15.
18. A system (110) for verifying the program code of a synthetic computer program, wherein the system (110) includes at least one processor (112), the processor (112) is programmed to perform the method according to any one of claims 1 to 15.
19. A method for synthesizing at least one alkyl group, a. To provide a program code for a synthesis computer program, wherein the synthesis computer program is configured to computer-control at least one automated synthesis apparatus (114), and the synthesis computer program has a plurality of program cycles for computer-controlling the automated synthesis apparatus (114) to sequentially synthesize the oligonucleotides using a sequence of synthesis cycles. b. Applying the method for verifying the program code described in any one of claims 1 to 15, c. Computer-controlled at least one automated synthesis apparatus (114) to automatically synthesize at least one oligonucleotide, Methods that include...
20. Before step c, d. At least one correction step, which includes correcting at least one parameter value of at least one parameter of interest according to at least one result of step b. The method according to claim 19, further comprising:
21. The synthesis method according to claim 19, wherein the at least one oligonucleotide comprises at least one oligonucleotide selected from the group consisting of DNA oligonucleotides, RNA oligonucleotides, and LNA oligonucleotides.