A co-occurrence matrix or co-occurrence distribution (also referred to as : gray-level co-occurrence matrices GLCMs) is a matrix that is defined over an image to be the distribution of co-occurring pixel values (grayscale values, or colors) at a given offset. It is used as an approach to texture analysis with various applications especially in medical image analysis. == Method == Given a grey-level image I {\displaystyle I} , co-occurrence matrix computes how often pairs of pixels with a specific value and offset occur in the image. The offset, ( Δ x , Δ y ) {\displaystyle (\Delta x,\Delta y)} , is a position operator that can be applied to any pixel in the image (ignoring edge effects): for instance, ( 1 , 2 ) {\displaystyle (1,2)} could indicate "one down, two right". An image with p {\displaystyle p} different pixel values will produce a p × p {\displaystyle p\times p} co-occurrence matrix, for the given offset. The ( i , j ) th {\displaystyle (i,j)^{\text{th}}} value of the co-occurrence matrix gives the number of times in the image that the i th {\displaystyle i^{\text{th}}} and j th {\displaystyle j^{\text{th}}} pixel values occur in the relation given by the offset. For an image with p {\displaystyle p} different pixel values, the p × p {\displaystyle p\times p} co-occurrence matrix C is defined over an n × m {\displaystyle n\times m} image I {\displaystyle I} , parameterized by an offset ( Δ x , Δ y ) {\displaystyle (\Delta x,\Delta y)} , as: C Δ x , Δ y ( i , j ) = ∑ x = 1 n ∑ y = 1 m { 1 , if I ( x , y ) = i and I ( x + Δ x , y + Δ y ) = j 0 , otherwise {\displaystyle C_{\Delta x,\Delta y}(i,j)=\sum _{x=1}^{n}\sum _{y=1}^{m}{\begin{cases}1,&{\text{if }}I(x,y)=i{\text{ and }}I(x+\Delta x,y+\Delta y)=j\\0,&{\text{otherwise}}\end{cases}}} where: i {\displaystyle i} and j {\displaystyle j} are the pixel values; x {\displaystyle x} and y {\displaystyle y} are the spatial positions in the image I; the offsets ( Δ x , Δ y ) {\displaystyle (\Delta x,\Delta y)} define the spatial relation for which this matrix is calculated; and I ( x , y ) {\displaystyle I(x,y)} indicates the pixel value at pixel ( x , y ) {\displaystyle (x,y)} . The 'value' of the image originally referred to the grayscale value of the specified pixel, but could be anything, from a binary on/off value to 32-bit color and beyond. (Note that 32-bit color will yield a 232 × 232 co-occurrence matrix!) Co-occurrence matrices can also be parameterized in terms of a distance, d {\displaystyle d} , and an angle, θ {\displaystyle \theta } , instead of an offset ( Δ x , Δ y ) {\displaystyle (\Delta x,\Delta y)} . Any matrix or pair of matrices can be used to generate a co-occurrence matrix, though their most common application has been in measuring texture in images, so the typical definition, as above, assumes that the matrix is an image. It is also possible to define the matrix across two different images. Such a matrix can then be used for color mapping. == Aliases == Co-occurrence matrices are also referred to as: GLCMs (gray-level co-occurrence matrices) GLCHs (gray-level co-occurrence histograms) spatial dependence matrices == Application to image analysis == Whether considering the intensity or grayscale values of the image or various dimensions of color, the co-occurrence matrix can measure the texture of the image. Because co-occurrence matrices are typically large and sparse, various metrics of the matrix are often taken to get a more useful set of features. Features generated using this technique are usually called Haralick features, after Robert Haralick. Texture analysis is often concerned with detecting aspects of an image that are rotationally invariant. To approximate this, the co-occurrence matrices corresponding to the same relation, but rotated at various regular angles (e.g. 0, 45, 90, and 135 degrees), are often calculated and summed. Texture measures like the co-occurrence matrix, wavelet transforms, and model fitting have found application in medical image analysis in particular. == Other applications == Co-occurrence matrices are also used for words processing in natural language processing (NLP).
Umple
Umple is a language for both object-oriented programming and modelling with class diagrams and state diagrams. The name Umple is a portmanteau of "UML", "ample" and "Simple", indicating that it is designed to provide ample features to extend programming languages with UML capabilities. == History and philosophy == The design of Umple started in 2008 at the University of Ottawa. Umple was open-sourced and its development was moved to Google Code in early 2011 and to GitHub in 2015. Umple was developed, in part, to address certain problems observed in the modelling community. Most specifically, it was designed to bring modelling and programming into alignment, It was intended to help overcome inhibitions against modelling common in the programmer community. It was also intended to reduce some of the difficulties of model-driven development that arise from the need to use large, expensive or incomplete tools. One design objective is to enable programmers to model in a way they see as natural, by adding modelling constructs to programming languages. == Features and capabilities == Umple can be used to represent in a textual manner many UML modelling entities found in class diagrams and state diagrams. Umple can generate code for these in various programming languages. Currently Umple fully supports Java, C++ and PHP as target programming languages and has functional, but somewhat incomplete support for Ruby. Umple also incorporates various features not related to UML, such as the singleton pattern, keys, immutability, mixins and aspect-oriented code injection. The class diagram notations Umple supports includes classes, interfaces, attributes, associations, generalizations and operations. The code Umple generates for attributes include code in the constructor, 'get' methods and 'set' methods. The generated code differs considerably depending on whether the attribute has properties such as immutability, has a default value, or is part of a key. Umple generates many methods for manipulating, querying and navigating associations. It supports all combinations of UML multiplicity and enforces referential integrity. Umple supports the vast majority of UML state machine notation, including arbitrarily deep nested states, concurrent regions, actions on entry, exit and transition, plus long-lasting activities while in a state. A state machine is treated as an enumerated attribute where the value is controlled by events. Events encoded in the state machine can be methods written by the user, or else generated by the Umple compiler. Events are triggered by calling the method. An event can trigger transitions (subject to guards) in several different state machines. Since a program can be entirely written around one or more state machines, Umple enables automata-based programming. The bodies of methods are written in one of the target programming languages. The same is true for other imperative code such as state machine actions and guards, and code to be injected in an aspect-oriented manner. Such code can be injected before many of the methods in the code Umple generates, for example before or after setting or getting attributes and associations. The Umple notation for UML constructs can be embedded in any of its supported target programming languages. When this is done, Umple can be seen as a pre-processor: The Umple compiler expands the UML constructs into code of the target language. Code in a target language can be passed to the Umple compiler directly; if no Umple-specific notation is found, then the target-language code is emitted unchanged by the Umple compiler. Umple, combined with one of its target languages for imperative code, can be seen and used as a complete programming language. Umple plus Java can therefore be seen as an extension of Java. Alternatively, if imperative code and Umple-specific concepts are left out, Umple can be seen as a way of expressing a large subset of UML in a purely textual manner. Code in one of the supported programming languages can be added in the same manner as UML envisions adding action language code. == License == Umple is licensed under an MIT-style license. == Examples == Here is the classic Hello world program written in Umple (extending Java): This example looks just like Java, because Umple extends other programming languages. With the program saved in a file named HelloWorld.ump, it can be compiled from the command line: $ java -jar umple.jar HelloWorld.ump To run it: $ java HelloWorld The following is a fully executable example showing embedded Java methods and declaration of an association. The following example describes a state machine called status, with states Open, Closing, Closed, Opening and HalfOpen, and with various events that cause transitions from one state to another. class GarageDoor { status { Open { buttonOrObstacle -> Closing; } Closing { buttonOrObstacle -> Opening; reachBottom -> Closed; } Closed { buttonOrObstacle -> Opening; } Opening { buttonOrObstacle -> HalfOpen; reachTop -> Open; } HalfOpen { buttonOrObstacle -> Opening; } } } == Umple use in practice == The first version of the Umple compiler was written in Java, Antlr and Jet (Java Emitter Templates), but in a bootstrapping process, the Java code was converted to Umple following a technique called Umplification. The Antlr and Jet were also later converted to native Umple. Umple is therefore now written entirely in itself, in other words it is self-hosted and serves as its own largest test case. Umple and UmpleOnline have been used in the classroom by several instructors to teach UML and modelling. In one study it was found to help speed up the process of teaching UML, and was also found to improve the grades of students. == Tools == Umple is available as a Jar file so it can be run from the command line, and as an Eclipse plugin. There is also an online tool for Umple called UmpleOnline , which allows a developer to create an Umple system by drawing a UML class diagram, editing Umple code or both. Umple models created with UmpleOnline are stored in the cloud. Currently UmpleOnline only supports Umple programs consisting of a single input file. In addition to code, Umple's tools can generate a variety of other types of output, including user interfaces based on the Umple model.
Oxa
Oxa (formerly Oxbotica) is an autonomous vehicle software company, headquartered in Oxfordshire, England, and founded by Paul Newman and Ingmar Posner. == History == In 2013, Newman and Posner led the RobotCar UK project as part of Oxford University's Department of Engineering Science Mobile Robotics Group. RobotCar became the first autonomous vehicle on UK roads. In 2014, the pair used the newly developed technology to found Oxbotica. Oxbotica has raised over $18 million to date and is backed by the IP Group, Parkwalk Advisors and AXA XL. In 2018, Uber's former EMEA business head, Fraser Robinson, was appointed to the board of directors. In May 2019, Ozgur Tohumcu replaced Dr Graeme Smith as Oxbotica's CEO. Also in 2019, the company opened an office in Toronto, Canada. In January 2021, Oxbotica announced it had raised $47 million in a Series B round. In August 2021, the company achieved a safety landmark as the first company to have its autonomy safety case assessed by BSI (British Standards Institution) against the requirements of the UK Code of Practice 2019, PAS 1881:2020 and PAS 1883:2020, certifying the safety conformity of its autonomous vehicle trials and testing. The assessment was completed as part of Project Endeavour, the UK's first multi-city demonstration of autonomous vehicle services and capability. In December 2021, Gavin Jackson was named CEO. In January 2023, the company raised $140 million in a Series C round. In May 2023, the company changed its name to Oxa. Oxa raised $103 million (£77 million) in March 2026, including $50 million from the UK National Wealth Fund. Nvidia's venture capital division, NVentures, also invested in the Series D funding round, along with existing Oxa shareholders IP Group, Australian pension fund Hostplus, and BP Ventures, a division of the UK oil company. == Technology == Oxa designs software and hardware for the conversion of industrial vehicles into autonomous ones. Its full stack, end-to-end Universal Autonomy software is both vehicle and platform-agnostic, with no dependence on external infrastructure such as GPS. It can be deployed in any environment and on any terrain. In addition to underground uses, the technology is also useful in natural canyons and forests, where GPS signals are weak or non-existent, but also in "urban canyons" — cities with tall buildings that obstruct GPS signals for proper navigation. == Public deployments == The LUTZ Pathfinder pod had its first public demonstration in February 2015 in Milton Keynes. The Government-funded project was designed to ensure that autonomous vehicles would comply with the Highway Code. The pod featured autonomous control software from Oxbotica, including 19 sensors, cameras, radar and Lidar. As part of the GATEway Project in 2017, Oxbotica trialled seven autonomous shuttle buses in Greenwich, navigating a two-mile riverside path near London's O2 Arena on a route that is also used by pedestrians and cyclists. Oxbotica ran the UK's first trial of autonomous grocery deliveries that year, with British online supermarket Ocado in London, as the next step in the GATEway Project. In 2018, Oxbotica deployed its autonomous vehicle software at London's Gatwick Airport, which subsequently became the first airport in the world to trial an autonomous shuttle service. The electric-powered vehicles transported staff via airside roads between the airport's North and South terminals. An airside trial of Oxbotica's autonomous driving technology was then successfully completed at Heathrow Airport in partnership with IAG Cargo, the first airside trial of an autonomous vehicle at a UK airport. The Oxbotica-designed CargoPod ran autonomously along a cargo route around the airside perimeter for three weeks. As part of the UK Centre for Connected and Autonomous Vehicles-funded DRIVEN project, Oxbotica is developing and deploying a fleet of Ford Fusion autonomous vehicles running in both London and Oxford on public roads, and in conjunction with its consortium partners, running real-time insurance. AXA XL is partnering with Oxbotica on the development of smart insurance products using Oxbotica's autonomy technology to improve road safety. In 2018, Oxbotica announced a partnership with London private taxi firm Addison Lee to develop and deploy autonomous taxis in the city of London by 2021. A 3D street mapping exercise was conducted in London's Canary Wharf. In 2019, Oxbotica deployed a fleet of their autonomous technology within Ford Mondeo cars on public roads in Stratford, London to test their use in city environments. The £13.2 million project is in collaboration with The DRIVEN Project to develop self-driving cars. == Awards == 2019 Royal Academy of Engineering Silver Medal - Paul Newman 2017 Financial Times ArcelorMittal Boldness in Business Award Barclays Award for Innovation 2016 Frost & Sullivan Award, Technology Leadership for Autonomous Driving Software
Clinical decision support system
A clinical decision support system (CDSS) is a form of health information technology that provides clinicians, staff, patients, or other individuals with knowledge and person-specific information to enhance decision-making in clinical workflows. CDSS tools include alerts and reminders, clinical guidelines, condition-specific order sets, patient data summaries, diagnostic support, and context-aware reference information. They often leverage artificial intelligence to analyze clinical data and help improve care quality and safety. CDSSs constitute a major topic in artificial intelligence in medicine. == Characteristics == A clinical decision support system is an active knowledge system that uses variables of patient data to produce advice regarding health care. This implies that a CDSS is simply a decision support system focused on using knowledge management. === Purpose === The main purpose of modern CDSS is to assist clinicians at the point of care. This means that clinicians interact with a CDSS to help to analyze and reach a diagnosis based on patient data for different diseases. In the early days, CDSSs were conceived to make decisions for the clinician in a literal manner. The clinician would input the information and wait for the CDSS to output the "right" choice, and the clinician would simply act on that output. However, the modern methodology of using CDSSs to assist means that the clinician interacts with the CDSS, utilizing both their knowledge and the CDSS's, better to analyse the patient's data than either a human or a CDSS could do on their own. Typically, a CDSS makes suggestions for the clinician to review, and the clinician is expected to pick out useful information from the presented results and discount erroneous CDSS suggestions. The two main types of CDSS are knowledge-based systems and non-knowledge-based (machine learning–based) systems: An example of how a clinician might use a clinical decision support system is a diagnosis decision support system (DDSS). DDSS requests some of the patient's data and, in response, proposes a set of possible diagnoses. The physician then takes the output of the DDSS and determines which diagnoses are likely and which are not, and, if necessary, orders further tests to narrow down the diagnosis. Another example of a CDSS would be a case-based reasoning (CBR) system. A CBR system might use previous case data to help determine the appropriate amount of beams and the optimal beam angles for use in radiotherapy for brain cancer patients; medical physicists and oncologists would then review the recommended treatment plan to determine its viability. Another important classification of a CDSS is based on the timing of its use. Physicians use these systems at the point of care to help them as they are dealing with a patient, with the timing of use being either pre-diagnosis, during diagnosis, or post-diagnosis. Pre-diagnosis CDSS systems help the physician prepare the diagnoses. CDSSs help review and filter the physician's preliminary diagnostic choices to improve outcomes. Post-diagnosis CDSS systems are used to mine data to derive connections between patients and their past medical history and clinical research to predict future events. Early speculation that AI-based decision support would replace clinicians in common tasks has largely given way to a consensus around assistive models, in which AI augments rather than supplants clinical judgment. Contemporary deep learning-based systems, unlike earlier rule-based tools, can be trained directly on clinical data without manual rule authoring and integrated into electronic health record workflows at the point of care. Another approach, used by the National Health Service in England, is to use a CDSS to triage medical conditions out of hours by suggesting a suitable next step to the patient (e.g. call an ambulance, or see a general practitioner on the next working day). The suggestion, which may be disregarded by either the patient or the phone operative if common sense or caution suggests otherwise, is based on the known information and an implicit conclusion about what the worst-case diagnosis is likely to be; it is not always revealed to the patient because it might well be incorrect and is not based on a medically-trained person's opinion - it is only used for initial triage purposes. === Knowledge-based === Most CDSSs consist of three parts: the knowledge base, an inference engine, and a mechanism to communicate. The knowledge base contains the rules and associations of compiled data which most often take the form of IF-THEN rules. If this was a system for determining drug interactions, then a rule might be that IF drug X is taken AND drug Y is taken THEN alert the user. Using another interface, an advanced user could edit the knowledge base to keep it up to date with new drugs. The inference engine combines the rules from the knowledge base with the patient's data. The communication mechanism allows the system to show the results to the user as well as have input into the system. An expression language such as GELLO or CQL (Clinical Quality Language) is needed for expressing knowledge artefacts in a computable manner. For example: if a patient has diabetes mellitus, and if the last haemoglobin A1c test result was less than 7%, recommend re-testing if it has been over six months, but if the last test result was greater than or equal to 7%, then recommend re-testing if it has been over three months. The current focus of the HL7 CDS WG is to build on the Clinical Quality Language (CQL). The U.S. Centers for Medicare & Medicaid Services (CMS) has announced that it plans to use CQL for the specification of Electronic Clinical Quality Measures (eCQMs). === Non-knowledge-based === CDSSs which do not use a knowledge base use a form of artificial intelligence called machine learning, which allow computers to learn from past experiences and/or find patterns in clinical data. This eliminates the need for writing rules and expert input. However, since systems based on machine learning cannot explain the reasons for their conclusions, most clinicians do not use them directly for diagnoses, reliability and accountability reasons. Nevertheless, they can be useful as post-diagnostic systems, for suggesting patterns for clinicians to look into in more depth. As of 2012, three types of non-knowledge-based systems are support-vector machines, artificial neural networks and genetic algorithms. Artificial neural networks use nodes and weighted connections between them to analyse the patterns found in patient data to derive associations between symptoms and a diagnosis. Genetic algorithms are based on simplified evolutionary processes using directed selection to achieve optimal CDSS results. The selection algorithms evaluate components of random sets of solutions to a problem. The solutions that come out on top are then recombined and mutated and run through the process again. This happens over and over until the proper solution is discovered. They are functionally similar to neural networks in that they are also "black boxes" that attempt to derive knowledge from patient data. Non-knowledge-based networks often focus on a narrow list of symptoms, such as symptoms for a single disease, as opposed to the knowledge-based approach, which covers the diagnosis of many diseases. An example of a non-knowledge-based CDSS is a web server developed using a support vector machine for the prediction of gestational diabetes in Ireland. == Regulations == === History, United States === The IOM had published a report in 1999, To Err is Human, which focused on the patient safety crisis in the United States, pointing to the incredibly high number of deaths. This statistic attracted great attention to the quality of patient care. The Institute of Medicine (IOM) promoted the usage of health information technology, including clinical decision support systems, to advance the quality of patient care. With the enactment of the American Recovery and Reinvestment Act of 2009 (ARRA), there was a push for widespread adoption of health information technology through the Health Information Technology for Economic and Clinical Health Act (HITECH). Through these initiatives, more hospitals and clinics were integrating electronic medical records (EMRs) and computerized physician order entry (CPOE) within their health information processing and storage. Despite the absence of laws, the CDSS vendors would almost certainly be viewed as having a legal duty of care to both the patients who may adversely be affected due to CDSS usage and the clinicians who may use the technology for patient care. However, duties of care legal regulations are not explicitly defined yet. With the enactment of the HITECH Act included in the ARRA, encouraging the adoption of health IT, more detailed case laws for CDSS and EMRs were still being defined by the Office of National Coordinator for Health Informati
The Last Question
"The Last Question" is a science fiction short story by American writer Isaac Asimov. It first appeared in the November 1956 issue of Science Fiction Quarterly; and in the anthologies in the collections Nine Tomorrows (1959), The Best of Isaac Asimov (1973), Robot Dreams (1986), The Best Science Fiction of Isaac Asimov (1986), the retrospective Opus 100 (1969), and Isaac Asimov: The Complete Stories, Vol. 1 (1990). While he also considered it one of his best works, "The Last Question" was Asimov's favorite short story of his own authorship, and is one of a loosely connected series of stories concerning a fictional computer called Multivac. Through successive generations, humanity questions Multivac on the subject of entropy. The story blends science fiction, theology, and philosophy. It has been recognized as a counterpoint to Fredric Brown's short short story "Answer", published two years earlier. == History == In conceiving Multivac, Asimov was extrapolating the trend towards centralization that characterized computation technology planning in the 1950s to an ultimate centrally managed global computer. After seeing a planetarium adaptation of his work, Asimov "privately" concluded that the story was his best science fiction yet written. He placed it just higher than "The Ugly Little Boy" (September 1958) and "The Bicentennial Man" (1976). The story asks the question of humanity's fate, and human existence as a whole, highlighting Asimov's focus on important aspects of our future like population growth and environmental issues. "The Last Question" ranks with "Nightfall" (1941) as one of Asimov's best-known and most acclaimed short stories. He wrote in 1973 that he appreciated how easy the story was to write after he had the idea. He was so often approached by fans who remembered the story but not the title, that in one instance he gave the answer, correctly, before the fan had even described the story. == Plot summary == By the year 2061, Multivac, a self-adjusting and self-correcting computer, has allowed mankind to reach beyond the planetary confines of Earth and harness solar energy. Two technicians, Adell and Lupov, celebrate Multivac's role in this development. Over drinks, they discuss that the sun will expire due to the second law of thermodynamics, which states that entropy inevitably increases. When Adell asks Multivac whether this can be reversed, the computer responds that it has insufficient data to answer. In several episodes over ten trillion years, increasingly advanced humans pose the same question to the computers of their time. Each time the computer gives the same response. At the heat death of the universe, the last disembodied consciousness of Man asks the question a final time of a computer that resides in hyperspace before merging with it. After collecting the last data from the dead universe, the computer continues to process it alone and finds an answer to the last question. Having no one to tell it to, it proceeds to demonstrate by saying "LET THERE BE LIGHT!" == Themes == === Philosophy === Although science and religion are frequently presented as having an oppositional relationship, "The Last Question" explores some biblical contexts ("Let there be light"). In Asimov's story, aspects like the great meaning of existence are culminated through both technology and human knowledge. The evolution from Multivac to AC also emulates a sort of cycle of existence. === Dystopian happy ending === Multivac's purpose was conceptualized with a desire for knowledge, promoting the idea that more knowledge will lead to a better and more fruitful future for humanity. However, the computer's answers regarding the future suggest an inevitable exhaustion of the Sun, and this thirst for knowledge becomes an obsession with the future. The story's end displays a dichotomy between annihilation and peace. == Dramatic adaptations == === Planetarium shows === "The Last Question" was first adapted for the Abrams Planetarium at Michigan State University (in 1966), featuring the voice of Leonard Nimoy, as Asimov wrote in his autobiography In Joy Still Felt (1980). It was adapted for the Strasenburgh Planetarium in Rochester, New York (in 1969), under the direction of Ian C. McLennan. It was adapted for the Edmonton Space Sciences Centre in Edmonton, Alberta (early 1970s), under the direction of John Hault. It was adapted for the Gates Planetarium at the Denver Museum of Natural History in 1973 under the direction of Mark B. Peterson It subsequently played at the: Fels Planetarium of the Franklin Institute in Philadelphia in 1973 Planetarium of the Reading School District in Reading, Pennsylvania in 1974 Buhl Planetarium, Pittsburgh in 1974 The Space Transit Planetarium of the Museum of Science in Miami during 1977 Vanderbilt Planetarium in Centerport New York, in 1978, read by singer-songwriter and Long Island resident Harry Chapin. Hansen Planetarium in Salt Lake City, Utah (in 1980 and 1989) A reading of the story was played on BBC Radio 7 in 2008 and 2009. Gates Planetarium in Denver, Colorado (in early 2020) In 1989 Asimov updated the star show adaptation to add in quasars and black holes. The story was adapted as a comic book by Don Thompson and drawn by John Estes in the third issue of ORBiT.
Stairstep interpolation
In the field of image processing, stairstep interpolation is a widely employed method technique for interpolating pixels after enlarging an image. The fundamental concept is to interpolate multiple times, in small increments, using any interpolation algorithm that is better than nearest-neighbor interpolation such as; bilinear interpolation, and bicubic interpolation. A common scenario is to interpolate an image by using a bicubic interpolation which increases the image size by no more than 10% (110% of the original size) at a time until the desired size is reached. Fred Miranda, a developer, popularized this method by creating and developing several Photoshop plug-ins that incorporate this technique. == Example ==
List of artificial intelligence artists
Many notable artificial intelligence artists have created a wide variety of artificial intelligence art from the 1960s to today. These include: == 20th century == Harold Cohen, active from 1960s to 2010s. Cohen's work is primarily with AARON, a series of computer programs that autonomously create original images. Eric Millikin, active from 1980s to present. Millikin's work includes AI-generated virtual reality, video art, poetry, music, and performance art, on topics such as animal rights, climate change, anti-racism, witchcraft, and the occult. Karl Sims, active from 1980s to present. Sims is best known for using particle systems and artificial life in computer animation. == 21st century == Refik Anadol, active from 2010s to present. Anadol's work includes video installations based on generative algorithms with artificial intelligence. Sougwen Chung, active from 2010s to present. Chung's work includes performances with a robotic arm that uses AI to attempt to draw in a manner similar to Chung. Stephanie Dinkins, active from 2010s to present. Dinkins' work includes recordings of conversations with an artificially intelligent robot that resembles a black woman, discussing topics such as race and the nature of being. Jake Elwes, active from 2010s to present. Their practice is the exploration of artificial intelligence, queer theory and technical biases. Libby Heaney, active from 2010s to present. Heaney's practice includes work with chatbots. Mario Klingemann, active from 2010s to present. Klingemann's works examine creativity, culture, and perception through machine learning and artificial intelligence. Mauro Martino, active from 2010s to present. Martino's work includes design, data visualization and infographics. Trevor Paglen, active from 2000s to present. Paglen's practice includes work in photography and geography, on topics like mass surveillance and data collection. Anna Ridler, active from 2010s to present. Ridler works with collections of information, including self-generated data sets, often working with floral photography.